PHP 异常 try/catch 块是否应该特定于异常?

派对戒指

我试图确定什么是 PHP 异常处理的最佳实践。

例如,一个检查验证的基本函数:

public function myValidationChecker(MyForm $form, $dateFrom, $dateTo) {
    try {

        $start = $dateFrom->format('Y-m-d'); // could cause exception
        $finish = $dateTo->format('Y-m-d'); // could cause exception

        // lots more logic here

        $diff = $dateTo->diff($dateFrom); // could cause different exception

        // ... more non-exception causing logic

    } catch (\Exception $e) {

        $this->log($e->getMessage());

        // attach error to $form so that code stops executing
        // & display generic error message to user
    }
}

我是否应该捕捉一个特定的异常,而不仅仅是\Exception,例如,UnexpectedValueException或者InvalidArgumentException让捕捉围绕那个特定的、可怕的代码区域?

或者同样,最好围绕整个函数,以防出现我没有计划的例外情况?无论哪种方式,在此 catch 块中,都会阻止执行代码,因为在运行此函数后,$form会检查错误消息。

达曼

您应该只捕获您知道如何处理的异常。不要只是抓住,因为你想要它,只在你需要的时候抓住它们。大多数情况下,异常应该冒泡并被通用记录器捕获,最好是 PHP 内置的记录器。

如果您知道如何处理异常,那么您就知道需要捕获什么。捕捉您需要处理的异常,让其他异常冒泡。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章