【问题标题】:What's the best practice in using if/else as a substitute for try/catch or vice versa? [duplicate]使用 if/else 代替 try/catch 的最佳做法是什么,反之亦然? [复制]
【发布时间】:2010-08-03 13:27:42
【问题描述】:

可能重复:
What is the advantage of using try {} catch {} versus if {} else {}

我想知道,一般来说,最好使用 try/catch 构造,还是尝试通过(过度?)使用 if/else 来防止此异常。示例:我应该捕获 FileNotFoundException,还是应该先测试并尝试查找文件。

最好的方法是什么?

【问题讨论】:

  • 两者都不是,for 循环是最好的......
  • 避免使用 try/catch 代替正确的逻辑通常是个好主意。
  • 也许我们应该对新手做出更好的判断,不要推迟他们?好的,也许不是一个好问题,或者不是一个真正的问题,但在这个过程中给某人改写和帮助的可能性。
  • @Abel:您已经根据您对 OP 的知识和意图的猜测完全重写了这个问题。我建议,如果这个问题更好地代表了 OP 的意图,那就是他们用这个文本创建一个新问题。我同意,正如现在所说,这是一个有效的问题。正如最初提出的那样,这个问题非常模糊,并且多次回答,比问题提供的更详细。

标签: php


【解决方案1】:

它们完全不同。它们不可互换,哪个合适取决于需求和上下文。

编辑:此答案基于原始的、未经编辑的问题。原文的全部内容是:

PHP : if/else vs try/catch

哪个更好

【讨论】:

  • 其实,这取决于你的观点和对“问题”的解释。许多教科书建议 if/else 作为 try/catch 的替代方法:即防止错误,不要捕获异常,除非您确实需要并且能够恢复状态并让真正的异常触发。
【解决方案2】:

他们有不同的目的。这取决于上下文。没有更好的

我建议您阅读Exceptionsif-else 声明。

【讨论】:

  • 它们确实有不同的目的,但是 try/catch 通常是代码异味的警告,应该重写为 if/else 来纠正程序流程并允许过滤输入。大多数异常应该被抛出,而不是被捕获,并表示输入或条件超出了预期。
  • @Abel:正如我所说,这取决于上下文。一般来说,你不能说一个比另一个更好
【解决方案3】:

经验法则:不要使用 try/catch 来控制程序流,只用它来捕获错误。

【讨论】:

    【解决方案4】:

    我认为您并不真正了解 if/else 和 try/catch 是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 2011-09-05
      • 2011-08-03
      相关资源
      最近更新 更多