# RepositoryException.java

    package com.university.bookstore.repository;

    /**
     * Exception thrown when repository operations fail.
     *
     * <p>This exception wraps underlying storage-related exceptions and provides
     * a clean abstraction for the domain layer.</p>
     *
     * @author Navid Mohaghegh
     * @version 3.0
     * @since 2024-09-15
     */
    public class RepositoryException extends RuntimeException {

        private static final long serialVersionUID = 1L;

        /**
         * Creates a new repository exception with the specified message.
         *
         * @param message the error message
         */
        public RepositoryException(String message) {
            super(message);
        }

        /**
         * Creates a new repository exception with the specified message and cause.
         *
         * @param message the error message
         * @param cause the underlying cause
         */
        public RepositoryException(String message, Throwable cause) {
            super(message, cause);
        }

        /**
         * Creates a new repository exception with the specified cause.
         *
         * @param cause the underlying cause
         */
        public RepositoryException(Throwable cause) {
            super(cause);
        }
    }