这篇是由我今天再弄框架异常处理的时候想出来写的。
首先,现在的各种语言错误都是可以try..catch去捕捉的,你可能说php要try干啥?php不是有@吗,忽略错误提示,各种设置。
但是这些都不是一个正确的做法,既然php提供了try那肯定有它的好处。
这里我就讲讲用一个异常类去捕捉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的错误.
接下来就需要抛异常类了。可以方便我们捕捉异常.
如果我们直接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(); }
可以直接try了后,以后都可以很方便的捕捉错误了.比如数据库错误直接把数据库运行方法放进try里面捕捉就行了
0条评论登录后可见