20230512 java.lang.Throwable
介绍
java.lang.Throwable
public class Throwable implements Serializable
Error 和 Exception 的父类,只有该类型才可以被 throw 和 catch
不是 RuntimeException
或 Error
子类的都被认为是检查异常(checked exception),包括 Throwable
构造函数
共有5个构造函数,继承时可以选择性重写
public Throwable() {
fillInStackTrace();
}
public Throwable(String message) {
fillInStackTrace();
detailMessage = message;
}
public Throwable(Throwable cause) {
fillInStackTrace();
detailMessage = (cause==null ? null : cause.toString());
this.cause = cause;
}
public Throwable(String message, Throwable cause) {
fillInStackTrace();
detailMessage = message;
this.cause = cause;
}
protected Throwable(String message, Throwable cause,
boolean enableSuppression,
boolean writableStackTrace) {
if (writableStackTrace) {
fillInStackTrace();
} else {
stackTrace = null;
}
detailMessage = message;
this.cause = cause;
if (!enableSuppression)
suppressedExceptions = null;
}
-
fillInStackTrace()
:填充执行栈轨迹信息。这个方法在这个Throwable对象中记录了关于当前线程的堆栈信息 -
detailMessage
:异常信息,getMessage
返回的就是这个信息 -
cause
:引发异常的原因,类型也是 Throwable,形成异常链,也可以通过initCause
方法设置cause
-
enableSuppression
:允许suppressedExceptions
-
writableStackTrace
:写入堆栈信息
公共方法
suppressedExceptions相关,通常与 try-with-resources 语句有关:
- addSuppressed
- getSuppressed
cause相关:
- getCause
- 返回
cause
或 null
- 返回
- initCause
message相关:
- getLocalizedMessage
- 获取本地化信息,默认调用
getMessage
方法
- 获取本地化信息,默认调用
- getMessage
- 返回异常的详细信息,detailMessage
stackTrace相关:
- fillInStackTrace
- getStackTrace, setStackTrace
- printStackTrace
- 先打印堆栈信息,然后打印 Suppressed 信息,再打印 Caused by 信息