【问题标题】:Why it is not recommended to handle unchecked exceptions by using try...catch blocks? Why only through some conditional checkings only?为什么不建议使用 try...catch 块来处理未经检查的异常? 为什么只通过一些条件检查呢?
【发布时间】:2014-08-23 16:05:35
【问题描述】:

为什么不建议使用 try...catch 块来处理未经检查的异常? 为什么我们只需要通过一些条件检查来避免它们?

【问题讨论】:

  • 我不确定你的意思,但一般来说 - 异常处理比条件检查最“昂贵”,而且通常更容易阅读控制流;所以这可能是你指的那个方面?
  • @AllanS.Hansen 感谢您的回复。但是我们只通过 try..catch 块处理检查的异常,这是推荐的。但我无法理解,如果出现未经检查的异常,不建议这样做。
  • 理论是未经检查的异常是(假设是)“致命的”,并且通常不能以确保程序将继续正确执行的方式容忍。这就是理论。

标签: java unchecked-exception


【解决方案1】:

Java 异常模型的一个基本限制是,如果一个方法抛出一个异常,它的调用者通常不可能知道它周围的环境。如果即将计算x % y 的代码测试y 是否为零,它可以知道DivideByZeroException 会发生的确切情况,并适当地处理这种情况。如果条件改为通过捕获异常来处理,则程序员可能期望当y 为零时尝试计算x % y 会导致异常,但也会捕获因意外原因而发生的除零异常(例如,调用一个应该对集合进行分区的方法,但有一个错误导致它尝试将集合细分为零块)。捕获异常时没有办法指定只希望捕获由于预期原因而引发的异常。在实践中,已检查和未检查的异常都有同样的问题,但未检查的异常在意外情况下被抛出的情况更为常见。

【讨论】:

    猜你喜欢
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2012-07-17
    • 2021-05-13
    • 1970-01-01
    • 2016-12-03
    相关资源
    最近更新 更多