gpt4 book ai didi

java - 与 Java 中的 Exception 与 Throwable 相关的开销

转载 作者:IT老高 更新时间:2023-10-28 21:13:26 35 4
gpt4 key购买 nike

我知道

throw new Exception();

有相当大的开销,因为它会创建一个完整的 stackTrace 等。
有没有

throw new Throwable();

出现同样的问题?这种行为是继承的,还是抛出 Throwable 的开销更小(没有)?

编辑
分析员的角度来看,用户输入错误的密码是程序正常执行顺序的一个异常(exception)。所以如果我有:

public Session newSession() {  
validate_user_and_password();
}

分析师的角度来看,抛出 UserNotValidException 听起来是正确的。
如果您的代码具有非常好的抽象,则返回 null0 听起来不正确。我只是想知道我是否可以在代码中真正实现这一点,或者我是否必须把它留给理论。

编程观点异常和分析师观点异常之间有很大的区别。

注意:我给出了一个非常简单和愚蠢的例子,这不是我的情况。
注 2:我知道返回 null 将是普通的事情,但我需要有适当的抽象和 OO 代码,而且,就我个人而言,我认为这没有什么坏处。

最佳答案

Throwable 在创建时也会创建堆栈跟踪。来自 java docs for Throwable :

throwable contains a snapshot of the execution stack of its thread at the time it was created.

因此,就创建堆栈跟踪的开销而言,ExceptionThrowable 之间应该没有区别。

如果您对“异常事件”使用异常(应该如此),那么您不应该太担心堆栈跟踪的开销。运行代码中很少发生异常事件。所以异常不应该以任何显着的方式影响正常代码的性能。

关于java - 与 Java 中的 Exception 与 Throwable 相关的开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2129647/

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