我想捕获所有错误,并根据其类型进行某种操作。我想处理以下类型的错误:
- 通知
- 警告
- 错误
- 严重错误
- 警报
- 紧急情况
我可以用 set_error_handler() 函数来做这些吗?
E_USER_WARNING 和 E_WARNING 之间有什么区别吗?
我想捕获所有错误,并根据其类型进行某种操作。我想处理以下类型的错误:
我可以用 set_error_handler() 函数来做这些吗?
E_USER_WARNING 和 E_WARNING 之间有什么区别吗?
这是一个源自PHP 手册的简单示例:
<?php
error_reporting(0);
set_error_handler('handle_error', E_ALL);
function handle_error($errno, $errmsg, $filename, $linenum, $vars) {
$errors = array(
E_ERROR => 'Error',
E_WARNING => 'Warning',
E_PARSE => 'Parsing Error',
E_NOTICE => 'Notice',
E_CORE_ERROR => 'Core Error',
E_CORE_WARNING => 'Core Warning',
E_COMPILE_ERROR => 'Compile Error',
E_COMPILE_WARNING => 'Compile Warning',
E_USER_ERROR => 'User Error',
E_USER_WARNING => 'User Warning',
E_USER_NOTICE => 'User Notice',
E_STRICT => 'Runtime Notice',
E_RECOVERABLE_ERROR => 'Catchable Fatal Error'
);
if(in_array($errno, array_keys($errors))) {
echo $errors[$errno];
}
}
$foo = NOT_DEFINED;
它将输出错误类型。