七空幻音LOGO

七空幻音

PHP搞事-处理程序错误异常2016-11-15 14:46:29

这篇是由我今天再弄框架异常处理的时候想出来写的。

首先,现在的各种语言错误都是可以try..catch去捕捉的,你可能说php要try干啥?php不是有@吗,忽略错误提示,各种设置。

但是这些都不是一个正确的做法,既然php提供了try那肯定有它的好处。

这里我就讲讲用一个异常类去捕捉PHP的程序异常。

PHP错误触发函数

PHP有设置错误函数

set_error_handler

还有错误异常类获取

set_exception_handler

还有一个是页面载入完成触发的

register_shutdown_function

结合这3个方法,就可以实现错误处理

//参数1,错误级别,参数2,错误信息
function error($erron,$errmsg){
    exit("错误:".$errmsg);
}
//参数1,错误异常类
function errorHandler($exception){
    exit("错误:".$exception->getMessage());
}
function fatal(){
    //判断是否有异常
    if(error_get_last()){
        $e = error_get_last();//获取异常
        exit("错误:".$e['message']);
    }
}

这样就能把异常输出了,也可以不输出,但是这样好像没什么太大的作用,还不如关闭错误提醒呢。

echo "测试异常处理<br/>";
echo 5/0;

这样就会抛出一个被除数是0的错误.

e.jpg

接下来就需要抛异常类了。可以方便我们捕捉异常.

如果我们直接try去捕捉5/0的错误,那和不捕捉没什么区别的。

try{
    echo 5/0;
}catch(Exception $e){
    //这样是捕捉不到的
}

因为默认是直接报错的。

然后因为php默认是不抛错误的,是直接报错,所以可以在上面定义的error方法里面抛错误,然后try去捕捉就OK了。

function error($erron,$errmsg){
    throw new Exception($errmsg);//抛一个Exception的错误,参数1是错误信息
}
function fatal(){
    //判断是否有异常
    if(error_get_last()){
        $e = error_get_last();//获取异常
        throw new Exception($e['message']);//抛一个Exception的错误,参数1是错误信息
    }
}

然后就可以try去捕捉.

echo "测试异常处理<br/>";
try{
    echo 5/0;
}catch(Exception $e){
    echo "捕捉异常:".$e->getMessage();
}

e1.jpg

可以直接try了后,以后都可以很方便的捕捉错误了.比如数据库错误直接把数据库运行方法放进try里面捕捉就行了

0条评论

    一共 0 页

    评论

    详细图片
    载入中...