package com.qmth.boot.core.exception;

/**
 * 通用请求参数异常，在API层按400状态码处理
 */
public class ParameterException extends RuntimeException implements CodeNameException {

    private static final long serialVersionUID = -1045285828688368482L;

    private Integer code;

    private String name;

    /**
     * 有明确的文字提示
     *
     * @param message
     */
    public ParameterException(String message) {
        super(message);
    }

    /**
     * 有明确的文字提示与触发来源
     *
     * @param message
     * @param cause
     */
    public ParameterException(String message, Throwable cause) {
        super(message, cause);
    }

    /**
     * 带所有参数的构造方法
     *
     * @param code    - 数字标识，范围在100~999
     * @param name    - 异常详细类型
     * @param message - 文字提示
     * @param cause   - 触发来源
     */
    public ParameterException(Integer code, String name, String message, Throwable cause) {
        super(message, cause);
        if (code != null) {
            if (code < 100 || code > 999) {
                throw new IllegalArgumentException("ParameterException.code should between 100~999");
            }
        }
        this.code = code;
        this.name = name;
    }

    public Integer getCode() {
        return code;
    }

    public String getName() {
        return name;
    }
}
