设置和还原错误处理程序
一种可能是在调用之前设置您自己的错误处理程序,并稍后使用还原以前的错误处理程序
restore_error_handler()。
set_error_handler(function() { });dns_get_record();restore_error_handler();
您可以基于这个想法并编写可重复使用的错误处理程序,为您记录错误。
set_error_handler([$logger, 'onSilencedError']);dns_get_record();restore_error_handler();
把错误变成异常
您可以使用
set_error_handler()和
ErrorException类将所有php错误转化为异常。
set_error_handler(function($errno, $errstr, $errfile, $errline, $errcontext) { // error was suppressed with the @-operator if (0 === error_reporting()) { return false; } throw new ErrorException($errstr, 0, $errno, $errfile, $errline);});try { dns_get_record();} catch (ErrorException $e) { // ...}
使用自己的错误处理程序时要注意的重要一点是,它将绕过
error_reporting设置并将所有错误(通知,警告等)传递给错误处理程序。您可以设置第二个参数
set_error_handler()来定义要接收的错误类型,或者使用
...= error_reporting()错误处理程序内部访问当前设置。
禁止警告
另一种可能性是使用@运算符禁止调用,然后检查after的返回值
dns_get_record()。 但是我建议不要这样做,
因为错误/警告会被触发而不是被抑制。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)