状态信息
Throwable / Exception 类是有状态的(因此 Throwable 是接口而不能是类),记录了四个信息:
private transient Object backtrace; // 栈的回溯点
private String detailMessage; // 异常的信息:在创建异常时备注
private Throwable cause = this; // 异常的原因:导致该异常的异常,默认为自身
private StackTraceElement[] stackTrace = UNASSIGNED_STACK; // 异常的发生顺序:以栈的形式存储Copy to clipboardErrorCopied
构造方法
Throwable / Exception 类含有四个构造方法,在创建时可以记录异常信息:
throw new Exception(); // 默认
throw new Exception("message"); // 记录异常信息
throw new Exception(e); // 记录异常原因
throw new Exception("message", e); // 记录详细信息和异常原因Copy to clipboardErrorCopied
常用方法
Throwable / Exception 类定义了多种常用方法用于获取异常数据,常用的有:
catch(Exception e){
System.out.println(e.getMessage());
e.printStacTrace();
}Copy to clipboardErrorCopied
我们也可以通过继承并重写 Exception / RuntimeException 类的方式,自定义异常类并使用。
// 自定义异常,重写方法可任选
class MyException extends Exception {
@Override
public MyException() {
super();
}
@Override
public MyException(String message) {
super(message);
}
@Override
public MyException(String message, Throwable cause){
super(message,cause);
}
@Override
public MyException(Throwable cause) {
super(cause);
}
}Copy to clipboardErrorCopied
在项目开发过程中,当 Sevice/DAO 层出现如 SQLException 异常时,程序一般不会把底层的异常传到 controller 层。程序可以捕获原始异常,然后再抛出一个新的业务异常。
catch(SQLException e){
throw new MyException("SQL Error", e);
}
Copy to clipboardErrorCopied
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。