使用 try {} catch {} 与 if {} else {} 相比有什么好处
我正在从php中的普通mysql切换到PDO,我注意到测试错误的常用方法是使用尝试/捕获组合而不是if / else组合。
该方法的优点是什么,我可以使用一个try / catch块而不是几个嵌套的if / else块来处理不同步骤(连接,准备,执行等)的所有错误?
我正在从php中的普通mysql切换到PDO,我注意到测试错误的常用方法是使用尝试/捕获组合而不是if / else组合。
该方法的优点是什么,我可以使用一个try / catch块而不是几个嵌套的if / else块来处理不同步骤(连接,准备,执行等)的所有错误?
我会使用 try/catch 块,因为通过代码的正常路径应该继续进行而不会出错,除非确实存在一些异常情况 - 例如服务器关闭,您的凭据已过期或不正确。我不一定会用它来处理非异常错误 - 比如说当前用户没有处于正确的角色。也就是说,当您可以合理地期望并处理不是异常情况的错误时,我认为您应该进行检查。
在您已经描述过的情况下 - 设置和执行查询,try/catch 块是处理它的绝佳方法,因为您通常期望查询成功。另一方面,您可能希望检查结果的内容是否符合控制流逻辑的期望,而不仅仅是尝试使用可能对您的目的无效的数据。
您要注意的一件事是草率地使用try/catch。Try/catch不应该被用来保护自己免受糟糕的编程 - “我不知道如果我这样做会发生什么,所以我将把它包装在尝试/捕获中,并希望最好的”类型的编程。通常,您需要将捕获的异常类型限制为与代码本身无关的异常类型(服务器关闭、凭据错误等),以便可以找到并修复与代码相关的错误(空指针等)。
通常,try-catch 块很棒,因为每当发生异常时,它们都会中断(移动到 catch 语句)。if-else块依赖于您预测错误何时会发生。
编辑:此外,当遇到错误时,捕获块不会阻止您的代码停止。