20230512 java.lang.Throwable

发布时间 2023-08-28 09:53:43作者: 流星<。)#)))≦

介绍

java.lang.Throwable

public class Throwable implements Serializable

Error 和 Exception 的父类,只有该类型才可以被 throw 和 catch

不是 RuntimeExceptionError 子类的都被认为是检查异常(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 信息