如何集中处理php错误和异常

时间:2010-08-17 12:19:33

标签: php exception-handling error-handling

以前在PHP 4中我创建了一个自定义错误处理程序(下面)来处理我自己的触发错误和一般PHP错误。但现在PHP 5引入了Exceptions,即我正在利用PDO进行数据库操作,我不知道如何处理一般PHP错误和这些异常?

function errorHandler($errno, $errstr, $errfile, $errline){  
  switch ($errno) {
    case E_USER_ERROR:
    // Send an e-mail to the administrator
    error_log("Error: $errstr \n Fatal error on line $errline in file $errfile \n", DEST_EMAIL, ADMIN_EMAIL);

  // Write the error to our log file
  error_log("Error: $errstr \n Fatal error on line $errline in file $errfile \n", DEST_LOGFILE, LOG_FILE);
  break;

    case E_USER_WARNING:
    // Write the error to our log file
    error_log("Warning: $errstr \n in $errfile on line $errline \n", DEST_LOGFILE, LOG_FILE);
    break;

    case E_USER_NOTICE:
    // Write the error to our log file
  error_log("Notice: $errstr \n in $errfile on line $errline \n", DEST_LOGFILE, LOG_FILE);
    break;

    default:
    // Write the error to our log file
    error_log("Unknown error [#$errno]: $errstr \n in $errfile on line $errline \n", DEST_LOGFILE, LOG_FILE);
  break;
}

   // Don't execute PHP's internal error handler
  return TRUE;

}

1 个答案:

答案 0 :(得分:1)

您可以使用set_exception_handler()来处理自定义函数中未捕获的异常。

然而,“正确”的方式是try ... catch例外情况。进行查询,并使用您的自定义函数进行相应的记录。