php – 处理不可避免的警告的正确方法

由于在常规操作中可能发生的错误条件,有许多好的旧程序函数可以发出警告,例如:fopen(),mail(),oci_connect()……

> most obvious workaround据说价格昂贵,并且具有隐藏一切的副作用:

echo @file_get_contents(oops_forgot_dollar);

>自定义错误处理程序看起来有点过分:

private function warningHandler($errno, $errstr, $errfile, $errline/*, array $errcontext*/){
    if(error_reporting()===0){
        return false;
    }else{
        throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
    }
}

// ....

try{
    set_error_handler('CSVLoader::warningHandler', E_WARNING);
    $this->fp = fopen($filename, 'r');
    restore_error_handler();

    $this->readData();
}catch(ErrorException $e){
    restore_error_handler();
    throw new CSVLoaderException("Could not open file: {$e->getMessage()}");
}

>即使在正确配置的服务器中,让警告通过也很烦人:

>在发展过程中,它们显示在不知名的地方,可以破坏事物
>在生产中,他们使用无用的数据填充错误日志

建议的做法是什么? PHP大师如何处理它?

最佳答案 error_log不是无用的数据

我发现如果有一个每小时的cron作业将error_log文件的内容通过电子邮件发送给某人,通常很容易掌握…….

很快你就会在适当的检查中添加代码库和排序的问题.

点赞