package com.easyagents.federation.sql.api;

import java.util.Objects;

/**
 * SQL 联邦查询异常，携带稳定错误码供调用方分类处理。
 */
public class FederationSqlException extends RuntimeException {

    /** 稳定错误码。 */
    private final FederationSqlErrorCode errorCode;

    /**
     * 创建异常。
     *
     * @param errorCode 稳定错误码
     * @param message 可安全返回的错误说明
     */
    public FederationSqlException(FederationSqlErrorCode errorCode, String message) {
        super(message);
        this.errorCode = Objects.requireNonNull(errorCode, "errorCode must not be null");
    }

    /**
     * 创建带原始原因的异常。
     *
     * @param errorCode 稳定错误码
     * @param message 可安全返回的错误说明
     * @param cause 原始异常
     */
    public FederationSqlException(FederationSqlErrorCode errorCode, String message, Throwable cause) {
        super(message, cause);
        this.errorCode = Objects.requireNonNull(errorCode, "errorCode must not be null");
    }

    /**
     * 返回稳定错误码。
     *
     * @return 错误码
     */
    public FederationSqlErrorCode errorCode() {
        return errorCode;
    }
}
