为什么PHP5s的默认错误设置可以接受?

时间:2015-12-31 21:18:39

标签: php exception warnings notice

经过PHP开发这么多时间之后,我很好奇为什么PHP中的默认错误设置在PHP7之前是可以接受的。

有关错误和警告的默认错误处理是打印到STDERR并继续,就像没有发生任何事情一样。为什么这被认为是正确的? PHP的开发人员如何得出这个结论?通知和警告总是意味着某种情况,通常是某种状态已经被破坏了。

我相信这会让开发人员无缘无故地产生混乱。考虑堆栈上的以下帖子:

Should PHP 'Notices' be reported and fixed?

Turn off warnings and errors on php/mysql

How do I turn off PHP Notices?

应将通知和警告转换为异常对象,以便您可以根据其意思采取行动,而不是让新开发人员相信可以安全地忽略它们。

考虑以下方法:

//This method is the default error handler for the entire application
//It throws an exception instead of an error
//$level         = Error level that the system is throwing (Warning,Notice,All,ect)
//$message       = Error message that the server is passing
//$file          = File in which the error occured
//$line          = Line in which the error occured
//array $context = Array of variables that were available in the scope of the error
public function ErrorHandler($level,$message,$file,$line,$context)
{
    switch($level)
    {
        //throw a PHPNoticeException on notices
        case E_NOTICE:
            throw new PHPNoticeException($message,$level);
        break;
        //Throw a PHPWarningException on warnings
        case E_WARNING:
            throw new PHPWarningException($message,$level);
        break;
        //Throw PHPExceptions on everything else
        default:
            throw new PHPException($message,$level);
    }
}

利用上述内容,可以捕获并处理错误和通知。但是,在默认状态下,程序员无法对发生的任何警告或通知采取行动,甚至无法知道它们是在第一时间发生的。

再次陈述我的问题,为什么无声错误是默认行为?为什么这个决定是由PHP开发人员做出的?它使开发人员相信通知和警告并不重要。我认为这是不负责任和应受谴责的。

0 个答案:

没有答案