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;
}
}