我做了一个例外,以说明导致错误的原因。

下面是我的代码

public class DefaultException extends RuntimeException {

    /**
     * DefaultException
     */
    private static final long serialVersionUID = 1L;


    /**
     * Constructor
     * @param cause exception
     */
    public DefaultException(Exception cause) {
        super(cause) ;
    }

    /**
     * Constructor
     * @param cause error message
     */
    public DefaultException(String message) {
        super(message) ;
    }

    /**
     * Constructor
     * @param cause message, exception
     */
    public DefaultException(String message, Throwable cause) {
        super(message, cause) ;
    }
}


生成这些构造函数之一,指定成功完成了什么错误。

但是我想在那里另外返回一个错误代码。

看起来像...

public DefaultException(String message, String errorCode) {
    super(message, errorCode) ;
}


但是Throwable类没有该构造函数,因此无法以这种方式实现。

我怎样才能做到这一点?

最佳答案

errorCode放入DefaultException所具有的字段中,然后在捕获DefaultException时,调用getter进行检索。

public class DefaultException extends RuntimeException {

    private String errorCode;

    public DefaultException(String message, String errorCode) {
        super(message);
        this.errorCode = errorCode;
    }

    public String getErrorCode() {
        return errorCode;
    }

    // ...
}


然后,当您抓住它时,您可以像这样去:

    try {
        //something that will error
    } catch (DefaultException e) {
        String errorCode = e.getErrorCode();
        // ...
    }

09-11 09:44