Java 自定义异常

注:建议先阅读 Java 异常分类

Java 中使用自定义异常类,一般是继承 Exception 或者它的某个子类。如果父类是 RuntimeException 或它的某个子类,则自定义异常也是未受检异常;如果是 Exception 或 Exception 的其他子类,则自定义异常是受检异常。

Java 中的一些异常类(比如 NullPointerException)其实并没有比 Throwable 这个基类多多少属性和方法,大部分类在继承父类后只是定义了几个构造方法,这些构造方法也只是调用了父类的构造方法,并没有额外的操作。

之所以定义这么多不同的类,主要是为了名字不同。异常类的名字本身就代表了异常的关键信息,无论是抛出还是捕获异常,使用合适的名字都有助于代码的可读性和可维护性。

所以,有时候我们自定义的异常也不会定义额外的属性和代码,只是继承父类,然后定义几个构造方法,调用父类的构造方法。

public class AppException extends Exception {
    public AppException() {
        super();
    }
    public AppException(String message, Throwable cause) {
        super(message, cause);
    }
    public AppException(String message) {
        super(message);
    }
    public AppException(Throwable cause) {
        super(cause);
    }
}

当然,我们也可以根据需要定义一些额外的属性和方法:

public class CustomerException extends RuntimeException {

    private String retCd ;  // 异常对应的返回码
    private String msgDes;  // 异常对应的描述信息

    public CustomerException() {
        super();
    }

    public CustomerException(String message) {
        super(message);
        msgDes = message;
    }

    public CustomerException(String retCd, String msgDes) {
        super();
        this.retCd = retCd;
        this.msgDes = msgDes;
    }

    public String getRetCd() {
        return retCd;
    }

    public String getMsgDes() {
        return msgDes;
    }
}

参考:Java 编程的逻辑Java 自定义异常与异常使用最佳实践

posted @ 2024-10-31 23:09  Higurashi-kagome  阅读(31)  评论(0编辑  收藏  举报