php中的try…catch…的不足

PHP中的try…catch…只能捕获异常类型的错误,对于一些运行时的错误是无法捕获的,下面的DEMO可实现捕获错误,但是,对于语法错误,它还是不能捕获的。

<?php

header('Content-Type:text/html;Charset=UTF-8');

function runtimeErrorHandler($level, $string) {
//自定义错误处理时,手动抛出一个异常实例
//为了把错误级别代码也显示出来,这里拼接了错误代码和错误信息作为新的错误信息来传递。
    throw new Exception($level . '|' . $string);
}
//设置自定义错误处理函数
set_error_handler("runtimeErrorHandler");

try {
    include 'aa.asp';
    arsort();
    $a = 2 / 0; //这里制造一个以前无法截获的除0错误
} catch (Exception $e) {
    echo '错误信息:', $e->getMessage(); //显示错误,这里就可以看到错误级别和错误信息了“2|Division by zero”
}

 

发布者:天南

一个好人

留下评论

电子邮件地址不会被公开。 必填项已用*标注