Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
捕捉PHP中的所有错误_Php - Fatal编程技术网

捕捉PHP中的所有错误

捕捉PHP中的所有错误,php,Php,我希望捕获所有错误,并根据其类型执行某种操作。我想处理以下类型的错误: 通知 警告 错误 关键错误 警报 紧急情况 我可以用set\u error\u handler()函数执行这些操作吗 E_USER_WARNING和E_WARNING之间有什么区别吗?下面是一个简单的例子,它源自: 对于大多数情况,您都可以,但要小心处理,因为您可能会更改应用程序的执行流,从而改变其行为。我见过一些可怕的情况,应用程序在出错后只是“继续”运行。。。顺便说一句:你为什么不读一下日志呢?检查一下手册:*例如#

我希望捕获所有错误,并根据其类型执行某种操作。我想处理以下类型的错误:

  • 通知
  • 警告
  • 错误
  • 关键错误
  • 警报
  • 紧急情况
我可以用set\u error\u handler()函数执行这些操作吗


E_USER_WARNING和E_WARNING之间有什么区别吗?

下面是一个简单的例子,它源自:


对于大多数情况,您都可以,但要小心处理,因为您可能会更改应用程序的执行流,从而改变其行为。我见过一些可怕的情况,应用程序在出错后只是“继续”运行。。。顺便说一句:你为什么不读一下日志呢?检查一下手册:*例如#1在脚本中使用错误处理**“警报”和“紧急情况”并不是专用的,但是所有其他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;