gpt4 book ai didi

java - "why the runtime exception is un-recoverable?"

转载 作者:行者123 更新时间:2023-12-01 11:33:43 26 4
gpt4 key购买 nike

在Java文档中,我看到了定义

“如果可以合理地期望客户端从异常中恢复,请将其设为受检查的异常。如果客户端无法从异常中恢复,请将其设为未经检查的异常”

Unchecked Exceptions — The Controversy

我不是很清楚“recover from”这个概念,是什么意思?

而且,根据这个定义,为什么 NumberFormatException 无法恢复?我想当这个异常发生时,我们可以要求用户提供另一个有效的字符串来继续程序。那是对的吗?

最佳答案

如果发生错误,开发人员无法合理地从中恢复应该是 Error例如VerifyErrorNoMuchMethodError .如果出现我认为不可能的情况,我会使用 AssertionError
如果发生开发人员可以从中恢复的错误,尽管大多数开发人员不太可能知道如何处理异常,请使用 RuntimeException因为这不会强制开发人员编写处理代码。

如果错误被传递给调用者处理,即使大多数开发人员不知道如何从异常中恢复,即使他们知道,也可能发现很难从该异常中恢复,可以使用已检查的异常。

您也可以创建一个 Throwable或也被检查的直接子类,但是我仅将其用作打印堆栈跟踪的简单方法,即明确表示这不是真正的错误。我建议避免抛出诸如 Throwable 之类的东西,因为它令人困惑并且不太可能被正确处理。

在我们的代码库中,我们可能会说我们有效地使用了 Exception 并且在许多情况下同时编写调用者和被调用者,这是能够以有用的方式传递异常的最佳机会。尽管如此,通过后备恢复仅占我们 catch 的 19%。案例,“信号”占案例的 6%(“信号”在极少数情况下从调用堆栈的深处传递已检查的异常)

总之,我们只能以我认为检查异常的方式处理和恢复大约 25% 的异常/错误。我认为这是一个有值(value)的 25%,但如果它更高,我会更高兴。

enter image description here

对于讨论我们处理异常的不同方式的完整帖子。
https://vanilla-java.github.io/2016/06/21/Reviewing-Exception-Handling.html

关于java - "why the runtime exception is un-recoverable?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41197339/

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