php如何捕获一个警告信息
我们要需怎样捕获警告,从PHP的一些原生函数被抛出,然后处理它们。
例如:
array dns_get_record ( string $hostname [, int $type= DNS_ANY [, array &$authns [, array &$addtl ]]] )
当dns查询失败会抛出一个警告。
用try/catch是不可以的,因为警告不算是一个异常。
现在有两个选择:
1.set_error_handler似乎有点小题大做,因为我不得不使用它来过滤页面中的每一个警告(这是真的吗?);
2.调整错误报告/显示警告这些不回输出到屏幕上,没有发现主机记录只能检测到返回值是false.
最佳的做法是什么?
一种可能性是在调用之前设置自己的错误处理程序,用restore_error_handler()恢复上一个错误处理。Zend Framework可以在这几方面做到。顺便说一句最近在php新闻组上有一些讨论是关于用原来的例外来取代PHP错误。
另一种可能性是在检查dns_get_record()的返回值之后使用@运算符来抑制错误。但是建议不要把这个作为errors/warnings的触发处理,不要抑制。
注:
你能用 set_error_handler()方法和ErrrorException类来把所有的php错误转化为异常。
function handleError($errno, $errstr, $errfile, $errline, array $errcontext)
{
// error was suppressed with the @-operator
if (0 === error_reporting()) {
return false;
}
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler('handleError');
try {
dns_get_record();
}
catch (ErrorException $e) {
// ...
}
近期文章
- 织梦5.7{dede:php}标签不起作用的解决办法
- php版本non-thread-safe和thread-safe的区别
- 什么是fatal flex scanner internal error--end of buffer missed
- php文件命名建议用小写
- php cookie字典
- seft和static在php中有什么不同
- 用php快速获取图片大小
- 用php的json_decode()检测json数据是否合法
- php三个等号
- unset和=null有什么不同
- php如何捕获一个警告信息
- 如何获得php数组中最后一个元素的键名?
- 在PHP中,你如何改变数组中某一元素的键名?
- php多维数组转xml
- php如何转化数组为SimpleXML对象
- php如何把数组定义为常量
- php根据数组中的值删除数组中的元素
- 计算两个日期相差多少天
- 如何捕获var_dump的输出结果保存到一个字符串中?
- 用php获取完整的URL