PHP搞事-处理程序错误异常
- 2016-11-15 06:46:29
- 幻音い
- 6994
温馨提示: 这篇文章于2951天前编写,现在可能不再适用或落后.
这篇是由我今天再弄框架异常处理的时候想出来写的。
首先,现在的各种语言错误都是可以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的错误.
接下来就需要抛异常类了。可以方便我们捕捉异常.
如果我们直接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里面捕捉就行了
阁下需要登录后才可以查看评论哦~