首页 PHP常见问题

PHP 错误和异常处理

From: https://www.jc2182.com/php/php-error-exception-handding.html

异常处理

PHP 5有一个类似于其他编程语言的异常模型。异常处理非常重要,可以更好地控制错误处理。让我们解释一下与异常相关的新关键字。
  • try - 使用异常的函数应该在“try”块中。如果异常未触发,则代码将继续正常进行。但是,如果异常触发,则会抛出异常。
  • throw - 这是触发异常的方式。每个“throw”必须至少有一个“catch”。
  • catch - “catch”块检索异常并创建包含异常信息的对象。
抛出异常时,不会执行语句后面的代码,PHP将尝试查找第一个匹配的catch块。如果没有捕获到异常,将发出一个PHP致命错误,其中包含“Uncaught Exception ...
  • 可以抛出异常,并在PHP中捕获(“catch”)。代码可以在try块中包围。
  • 每次try必须至少有一个相应的捕获块。可以使用多个catch块来捕获不同类别的异常。
  • 可以在catch块中抛出(或重新抛出)异常。
以下是一段代码,将此代码复制并粘贴到文件中并验证结果。
<?php
   try {
      $error = '总是抛出这个错误';
      throw new Exception($error);
      
      // 不执行异常后的代码。
      echo '永远不执行';
   }catch (Exception $e) {
      echo '捕获异常: ',  $e->getMessage(), "\n";
   }
   
   // 继续执行
   echo 'Hello World';
?>
在上面的示例中,$e->getMessage函数用于获取错误消息。可以从Exception类中使用以下函数。
  • getMessage() - 异常消息
  • getCode() - 异常代码
  • getFile() - 源文件名
  • getLine() - 源代码行
  • getTrace() - 跟踪的数组
  • getTraceAsString() - 格式化的跟踪字符串
创建自定义异常处理程序,您可以定义自己的自定义异常处理程序。使用以下函数设置用户定义的异常处理函数。
string set_exception_handler ( callback $exception_handler )
这里,exception_handler是发生未捕获的异常时要调用的函数的名称。必须在调用set_exception_handler()之前定义此函数。
<?php
   function exception_handler($exception) {
      echo "捕获异常: " , $exception->getMessage(), "\n";
   }
        
   set_exception_handler('exception_handler');
   throw new Exception('未捕获的异常');
   
   echo "不会执行\n";
?>
提示:在后面的章节会介绍错误处理的完整函数集。
  • 上一篇: 没有了
  • 下一篇: 基本的错误处理:使用 die() 函数