在 Java 中防止异常与捕获异常 [已关闭]

2022-09-04 05:04:42

我想知道在实践中其他SOers如何倾向于处理和/或防止异常。

在什么情况下可以防止异常,以及如何防止?在什么情况下会发现异常?

我通常通过,嗯,基本上说“NullPointerExceptions”(和其他类似的)来防止“ NullPointerExceptions”if(foo!=null) {...}

我发现在大多数情况下,这比使用尝试捕获块所涉及的所有内容都要笨重。

当潜在的异常更复杂或更多时,我会使用 try-catch 块。


答案 1

在我看来,只有当引用为空(例如)实际上表示有效的程序状态时,才有意义防止NullPointerException(例如)。如果没有,则不应阻止其发生,因为在这种情况下,您希望程序死硬。

特别是在Java中,从运行时异常(例如FregalArgumentException)降序的某些异常实际上意味着编程错误,如果您的程序是正确的,则不应该发生这种情况。我试图遵循这一点。如果我正在编写一个对其参数施加限制的方法,我不会尝试避免引发异常。我会积极地投掷一个。


答案 2

如果您可以防止异常,那么这样做是更好的编程实践。例如,任何 NullPointerException 通常都表示编程错误 IMO。(这是它是运行时异常的原因之一。

当您希望能够在一个代码层中检测到故障条件,但您不希望在那里处理故障条件,而是在更高的代码级别上处理故障条件时,异常更有用。也就是说,您打算将异常抛出多个帧到堆栈上 - 或者一直向上堆栈。当您不希望程序能够有意义地处理问题时,异常也很有用。


推荐