一尘不染

使用try {} catch {}和if {} else {}相比有什么优势?

mysql

我从php中的普通mysql切换到PDO,我注意到测试错误的常用方法是使用try / catch组合,而不是if / else组合。

该方法的优点是,我可以使用一个try / catch块而不是几个嵌套的if / else块来处理不同步骤(连接,准备,执行等)的所有错误吗?


阅读 476

收藏
2020-05-17

共1个答案

一尘不染

除非确实存在某些特殊情况,否则我应该使用try /
catch块来遍历代码的正常路径而不会出错,除非确实存在某些特殊情况,例如服务器宕机,凭据过期或不正确。我并不一定要使用它来处理非异常错误-
就像当前用户没有扮演正确的角色一样。也就是说,当您可以合理地预期并处理不是异常情况的错误时,我认为您应该进行检查。

在您描述的情况下-设置并执行查询,try /
catch块是一种很好的处理方式,因为您通常希望查询成功。另一方面,您可能想要检查结果的内容是否符合控制流逻辑的期望,而不仅仅是尝试使用对您的目的无效的数据。

您要注意的一件事是尝试/捕获的草率使用。尝试/捕获不应该用来保护自己免受不良编程的侵害-“我不知道如果这样做,将会发生什么,所以我将其包装在尝试/捕获中,并希望获得最好的”编程。通常,您希望将捕获的异常类型限制为与代码本身不相关的异常(服务器关闭,凭据错误等),以便您可以查找和修复与代码相关的错误(空指针等)。
)。

2020-05-17