可能重复:why-is-java-lang-throwable-a-class
你好!我不明白为什么 Throwable 不是抽象类。我只看到一个用例:在日志系统中找出调用层次结构。但它可以是这个或其他类的一些静态方法。所以为什么?)
谢谢。
更新
来自 java.util.logging.LogRecord
// Get the stack trace.
StackTraceElement stack[] = (new Throwable()).getStackTrace();
为什么它不能Throwable.getStackTrace();
或在 java.lang.Thread 中
(new Exception()).getStackTrace();
这样我们就可以避免throw new Throwable();
来自 javadoc 的upd2
Throwable 类是 Java 语言中所有错误和异常的超类。
所以,作为一个超类,它应该是抽象的,恕我直言。根据这个定义,使用它来获取堆栈跟踪并不是一个好例子。