是否在引发 Java 异常时生成堆栈跟踪?

这是假设我们不调用 .printstacktrace 方法 - 只是抛出和捕获。

我们正在考虑针对某些性能瓶颈。


答案 1

否,堆栈跟踪是在构造异常对象时生成的,而不是在引发异常对象时生成的。Throwable() 构造函数调用 fillInStackTrace()。(至少在Sun/Oracle的JDK 6 for Windows中是这样。


答案 2

构造异常时捕获堆栈跟踪。

如果你真的不关心stacktrace,你可以构造一次异常,然后多次抛出它,但它看起来像一个黑客,可能会令人困惑。


推荐