PHP中的错误处理,die与异常

8
例如,我的使用情况如下:
$check = 'no';

if($check == 'yes') {
   //do stuff
} else {
      die('Error found');
}

我看到许多开发者使用以下代码:

if($check == 'yes') {
      //do stuff
   } else {
      throw new Exception('Error found.');
   }
  1. 哪种方法更“好”?
  2. 抛出异常而不是停止执行脚本有什么好处吗?
3个回答

1

如果出现异常情况(如数据库连接或查询、页面或文件未找到等),您可以使用throw new Exception,然后在适当的位置catch它。然后可能将错误记录到文件中,向管理员发送电子邮件,然后使用die("Some textual message to user.");。如果您不想使用die(),您可以向用户显示一些404未找到或500内部错误页面。


1
哪种方法更好呢?
这取决于您的需求。不能说哪个更好(当您实际想要讨论错误处理时,还应考虑其他错误处理方式,而本网站可能不是正确的地方)。
抛出异常是否有任何好处而不是停止执行脚本?
异常可以被捕获,但无法捕获die。例如,如果您想测试代码,则die通常会停止程序。
此外,异常可以携带更多信息并更精确地携带它。例如,与die相比,异常消息更易于访问。异常保留了抛出它的文件和行。对于调试,有堆栈跟踪等工具。

0

在设计大型网站时,异常更好,因为:

  • 它们不会立即停止脚本(您有机会在漂亮的5xx页面上通知用户内部服务器错误)
  • 如果您将来决定以不同的方式处理错误,则可以在不修改原始代码的情况下这样做
  • 异常提供回溯并简化调试
  • 我不确定,但使用die时不应调用析构函数(异常提供执行它们的选项)
  • 您可以创建许多异常类型,每种类型针对不同类型的错误,并稍后轻松处理它们

您应该仅在较小的脚本和页面中使用die,其中您不需要为使用样式或在发生致命错误(无法将主库包含到索引中或类似情况)的情况下使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接