PHP中如何捕获Warning、Notice等错误信息
匿名 · 更新于 2016/4/21
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内部函数进行封装。

