gpt4 book ai didi

java - 为什么 Throwable.fillInStackTrace() 方法是公开的?为什么有人会使用它?

转载 作者:IT老高 更新时间:2023-10-28 20:59:50 26 4
gpt4 key购买 nike

我很好奇为什么 java.lang.Throwable 的方法 fillInStackTrace 是公开的?

此方法将原始堆栈跟踪替换为其调用位置的堆栈跟踪,删除本地化异常所需的信息。它可以用于混淆,但不需要太多努力,因为新的堆栈跟踪将指向混淆代码。更好的方法是简单地隐藏异常或抛出新异常。

但我找不到在现有 Throwable 上调用此方法的任何合理案例。所以问题是:为什么这个方法是公开的?背后有什么意义吗?

最佳答案

一个原因是性能。抛出和捕获异常很便宜;昂贵的部分是filling in the stack trace .如果你重写 fillInStackTrace() 什么都不做,那么创建异常也会变得很便宜。

对于便宜的异常(exception),您可以使用 flow control 的异常(exception)。 ,这可以使代码在某些情况下更具可读性;您可以在实现需要的 JVM 语言时使用它们more advanced flow control ,如果您正在编写 actors library,它们会很有用。 .

关于java - 为什么 Throwable.fillInStackTrace() 方法是公开的?为什么有人会使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9788993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com