PHP中如何捕获Warning、Notice等错误信息

PHP5中只是增加了对异常的处理,但是之前很多低版本的函数不会抛出异常,比如 iconv等,当遇到非法输入的时候,会出现:

iconv(): Detected an incomplete multibyte character in input string

的错误信息,只能屏蔽,但却没有很好的方式来捕获这些错误事件,然后来进行处理。

翻阅了PHP的手册后发现了一个新函数,error_get_last(),大概就是取得程序中最后一个错误信息(包括Error、 Warning、Notice等所有的错误),这个是PHP 5.2以后出现的函数,通过这个函数,可以用下列代码来实现捕获错误事件的方式。
function my_iconv($from, $to, $string, $line) {
@trigger_error('hi', E_USER_NOTICE);

$result = @iconv($from, $to, $string);

$error = error_get_last();
if($error['message']!='hi') {
   //处理错误  
   $result = $string;
}

return $result;
}

上面是,当转换过程出现错误的报错的时候,我就不转换,保持原来的编码格式。用这个方法可以对很多PHP内部函数进行封装。

你可能感兴趣的:(PHP)