抛出Java异常时是否生成堆栈跟踪?

Som*_*lse 8 java performance jvm exception-handling exception

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

我们正在考虑这种性能瓶颈.

per*_*erp 14

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

  • 另外,如果你关心性能,你可以覆盖`fillInStackTrace()`什么都不做 (4认同)
  • 抛出异常和构建异常之间存在差异. (4认同)

axt*_*avt 8

构造异常时捕获Stacktrace.

如果你真的不关心堆栈跟踪,你可以构造一次异常并多次抛出它,但它看起来像一个黑客,可能会令人困惑.