2

从 Java 7 开始,java.lang.Throwable该类有一个新的protected构造函数:

protected Throwable(String message, Throwable cause,
                    boolean enableSuppression, boolean writableStackTrace)

它似乎对是否应计算堆栈跟踪和是否允许抑制提供了细粒度的控制。但是在什么情况下这可以被认为是有用的呢?在没有堆栈跟踪计算的情况下抛出这样的异常是否有任何性能优势?

4

1 回答 1

0

我会说这个或多或少的哲学问题。我正在考虑这个问题,我可以想象几个场景:

  1. 您非常迅速地引发异常,例如每秒数百次。它可能是遗留代码,您无法更改它,但您可以抑制堆栈跟踪构建,这将为您带来一些性能提升。

  2. 您已经实现了自己的堆栈跟踪机制。我看到并发应用程序的逻辑非常复杂,其中堆栈跟踪没有说明问题的根本原因。但是我没有看到任何替代的堆栈跟踪实现。

于 2016-03-12T14:04:39.410 回答