package egovframework.exception;

import lombok.Getter;

/**
 * 기본 예외 클래스
 * 
 * 이 예외는 애플리케이션에서 발생하는 기본적인 예외를 처리하기 위해 사용됩니다.
 * BasicException 발생 시 에러코드는 "MESSAGE"로 표시되며,
 * 메시지만 사용자에게 표출됩니다.
 */
@Getter
public class MessageException extends RuntimeException {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 에러 코드
     */
    private final String errorCode;
    
    /**
     * 기본 생성자
     * 
     * @param message 예외 메시지
     */
    public MessageException(String message) {
        super(message);
        this.errorCode = "MESSAGE_EXCEPTION";
    }
    
    /**
     * 에러 코드를 지정할 수 있는 생성자
     * 
     * @param message 예외 메시지
     * @param errorCode 에러 코드
     */
    public MessageException(String message, String errorCode) {
        super(message);
        this.errorCode = errorCode;
    }
    
    /**
     * 원인 예외를 포함하는 생성자
     * 
     * @param message 예외 메시지
     * @param cause 원인 예외
     */
    public MessageException(String message, Throwable cause) {
        super(message, cause);
        this.errorCode = "MESSAGE_EXCEPTION";
    }
    
    /**
     * 에러 코드와 원인 예외를 모두 지정할 수 있는 생성자
     * 
     * @param message 예외 메시지
     * @param errorCode 에러 코드
     * @param cause 원인 예외
     */
    public MessageException(String message, String errorCode, Throwable cause) {
        super(message, cause);
        this.errorCode = errorCode;
    }
}