package com.huimv.employment.common.exception;

/**
 * 可预期的业务异常。
 * <p>
 * 用于在 Service 层主动抛出业务错误（如验证码错误、账号禁用等），
 * 区别于不可预期的系统异常（如 NPE、数据库连接失败）。
 * 由全局异常处理器捕获后转换为统一 JSON 响应，不会打印完整堆栈（除非需要排查）。
 * </p>
 *
 * @see ErrorCode
 */
public class BizException extends RuntimeException {

    /** 业务错误码，对应 {@link ErrorCode#getCode()} */
    private final int code;

    /**
     * 使用预定义错误码的默认文案。
     *
     * @param errorCode 错误码枚举
     */
    public BizException(ErrorCode errorCode) {
        super(errorCode.getMessage());
        this.code = errorCode.getCode();
    }

    /**
     * 使用预定义错误码，但覆盖提示文案（如「阿里云短信配置不完整」）。
     *
     * @param errorCode 错误码枚举
     * @param message   自定义提示文案
     */
    public BizException(ErrorCode errorCode, String message) {
        super(message);
        this.code = errorCode.getCode();
    }

    public int getCode() {
        return code;
    }
}
