【问题标题】:Is using if-else a possible substitute for try-catch exception handling mechanism是否使用 if-else 替代 try-catch 异常处理机制
【发布时间】:2012-06-17 19:44:23
【问题描述】:

最近,我正在研究抛出我们自己的异常,我想也许我们可以使用if-else 来检查“可疑”代码,然后在if 块中处理它。在相应的else 块中,我们可以继续进行,就好像没有出现异常一样..


我知道使用if 语句来尝试捕获所有异常可能有点困难,但这是可能的。另外,我想它在内存使用方面也会更好,因为我听说try-catch 块在内存使用方面非常昂贵。

【问题讨论】:

  • 我看不出这怎么可能或合意。
  • 存在无法应用 if-then-else 的情况,因为您不知道要测试什么,例如在外部(二进制)库中。
  • 你也可以使用try/catch/finally来代替传统的流控结构if/else/while/for/...。不推荐。

标签: java exception-handling try-catch


【解决方案1】:

实际上在旧语言中没有try...catch 关键字,您应该始终使用自己的方式处理异常(是的,可以使用if-else)。

但是今天在像 Java 这样的语言中,由于检查异常,有些代码必须使用 try/catch。因此,根据语言和您编写的代码,您不能完全停止使用 try...catch 块。

http://en.wikipedia.org/wiki/Exception_handling#Checked_exceptions

【讨论】:

    【解决方案2】:

    Try / Catch 的想法是它“捕获”您可能遗漏的任何专门编码的错误。我个人认为您应该尝试针对您可以预见的所有情况进行显式编码,然后使用 Try/Catch 来处理您没有预见到的错误(并且总会有一些错误)。

    【讨论】:

      【解决方案3】:

      异常由 JVM 处理;客户端不可能忽略已检查的异常。

      您可以添加任何您喜欢的“可疑”代码验证,但您仍应在需要时使用 try/catch。

      写出正确的Java习语。我认为您的方案没有任何优势,并且可能会让任何必须在您之后维护您的代码的人感到困惑。 (那个可怜的人甚至可能在 6-12 个月后就是你。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 2013-08-20
        相关资源
        最近更新 更多