我发现在创建异常 Exception e = new Exception()
之后直接显式调用了 e.fillInStacktrace()
。
我认为这是多余的,因为 Throwable
的构造函数已经调用了 fillInStacktrace()
。
但也许我忽略了一些东西,这几行很有用:
Exception e = new Exception();
e.fillInStackTrace();
creationInfo = new CreationInfo(e.getStackTrace());
(public CreationInfo(StackTraceElement[] aStackTrace){...}
)
我觉得
在创建异常后直接额外调用
<e.fillInStackTrace();
是多余的,并且会浪费大量资源,因为这种方法很昂贵。似乎只有获取当前堆栈跟踪才需要此构造,因此:
creationInfo = Thread.currentThread().getStackTrace();
是更好的方法。
在填写问题报告之前我想问你是不是我忽略了什么?
最佳答案
您在这两个方面都是正确的:fillInStackTrace
可用的最大原因是让您在自己的异常中覆盖它,从而节省提供堆栈跟踪信息的成本,或者您需要隐藏有关可能引发异常的位置的信息的位置。参见 this answer了解更多详情。
关于java - 调用 exception.fillInStacktrace 有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15472719/