php的异常和错误的接管

1. 接管错误:

//自定义错误接管
function userErrorHandler($errno, $errstr, $errfile, $errline){
  if (!(error_reporting() & $errno)) {
   //错误码未包含在错误报告中
        return;
    }

    switch ($errno) {
      case E_USER_ERROR:
          echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
          echo "  Fatal error on line $errline in file $errfile";
          echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
          echo "Aborting...<br />\n";
          exit(1);
          break;

      case E_USER_WARNING:
          echo "<b>WARNING</b> [$errno] $errstr<br />\n";
          break;

      case E_USER_NOTICE:
          echo "<b>NOTICE</b> [$errno] $errstr<br />\n";
          break;

      default:
          echo "Unknown error type: [$errno] $errstr<br />\n";
          break;
    }

    //不执行PHP内置的错误接管
    return true;
}

//设置错误接管的自定义函数
set_error_handler("userErrorHandler");

2. 接管异常:

//自定义异常的处理
function exception_handler($exception) {
  echo "Uncaught exception: " , $exception->getMessage(), "\n";
}

//设置异常接管的自定义函数
set_exception_handler('exception_handler');

 

 

原文地址:https://www.cnblogs.com/langtao/p/2975040.html