为什么 Catch a RuntimeException 不被认为是一个好的编程实践?[已关闭]
为什么 catch a using 不被认为是一个好的编程实践?处理运行时异常的正确方法是什么?RuntimeException
catch(Throwable exc) {}
另外,为什么不抓住?如何实现此行为?catch(Exception exc) {}
RuntimeException
为什么 catch a using 不被认为是一个好的编程实践?处理运行时异常的正确方法是什么?RuntimeException
catch(Throwable exc) {}
另外,为什么不抓住?如何实现此行为?catch(Exception exc) {}
RuntimeException
通常,a 表示编程错误(在这种情况下,您无法“处理”它,因为如果您知道期望它,则可以避免该错误)。RuntimeException
抓住这些一般例外中的任何一个(包括)都是一个坏主意,因为这意味着你声称你理解所有可能出错的情况,尽管如此你仍然可以继续。有时在堆栈的顶层捕获(但通常不是)是合适的,例如在Web服务器中 - 因为通常单个请求出了什么问题,您通常都希望保持服务器正常运行并响应进一步的请求。我通常不会捕获,因为这包括通常用于指示真正灾难性错误的子类,这些错误通常最好通过终止进程来“处理”。Throwable
Exception
Throwable
Throwable
Error
从根本上说,当出现错误时,你需要非常谨慎地继续执行特定任务 - 你需要真正对错误的含义有一个很好的了解,否则你可能会继续对世界状态做出错误的假设,并使事情变得更糟。在大多数情况下(不是全部),简单地放弃一个请求比试图继续下去要好,不管一个神秘的失败。(不过,它确实很大程度上取决于上下文 - 例如,在尝试获取一条辅助信息时,您可能并不关心出了什么问题。
至于捕捉不捕捉 - 这根本不是真的。唯一奇怪的是它(和子类)是未经检查的异常,而所有其他子类都被检查过。Exception
RuntimeException
RuntimeException
Exception
Exception
Throwable 是所有已检查和未选中()和错误的超类。Exception
RuntimeException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.Error
理想情况下,捕获错误不是一个好的做法。
并且作为扩展,所以它抓住了所有的'RuntimeException
Exception
RuntimeExcption