旗下导航:搜·么
当前位置:网站首页 > PHP问题 > 正文

php非常处置惩罚和错误处置惩罚区分【php问题】

作者:搜搜PHP网发布时间:2019-11-27分类:PHP问题浏览:80


导读:"毛病"和"非常"的观点十分相似,很轻易殽杂,"毛病"和"非常"都表清楚明了项目出了题目,都邑供应相干的信息,而且都有毛病范例。但是,"非常机制"是在"毛病机制"后...
"毛病"和"非常"的观点十分相似,很轻易殽杂,"毛病"和"非常"都表清楚明了项目出了题目,都邑供应相干的信息,而且都有毛病范例。

但是,"非常机制"是在"毛病机制"后才涌现的,"非常"是防止"毛病"的不足。(引荐进修:PHP编程从入门到通晓)

比较重要的一点就是由于"毛病"的信息不雄厚,我们见过最多的函数申明就是: 胜利时刻返回***, 毛病的时刻返回FALSE, 但是一个函数失足的缘由能够有多种, 失足的品种更有多种. 一个简朴的FALSE, 并不能把细致的毛病信息通知挪用者.

PHP中将代码本身非常(平常是环境或许语法不法而至)成为毛病,将运转中涌现的逻辑毛病称为非常(Exception)毛病是没法经由过程代码处置惩罚的,而非常则能够经由过程try/catch处置惩罚。

非常

非常是Exception类的对象,在碰到没法修复的状态时抛出,涌现题目时,非经常使用于主动出击,托付职责,非常还可用于戍守,展望潜伏的题目,减轻其影响。

Exception对象有两个重要的属性:一个是音讯,另一个是数字代码。我们离别能够用getCode()和getMessage()猎取这两个属性。

非常处置惩罚顺序

那末我们应当怎样捕捉每一个能够抛出的非常呢?PHP许可我们注册一个全局非常处置惩罚顺序,捕捉一切未被捕捉的非常。非常处置惩罚顺序运用set_exception_handler()函数注册(这里运用匿名函数)。

set_exception_handler(function (Exception $e)
{
	echo "我本身定义的非常处置惩罚".$e->getMessage();
});
throw new Exception("this is a exception");
 
//运转效果:我本身定义的非常处置惩罚this is a exception

毛病

除了非常以外,PHP还供应了用于报告毛病的函数。PHP能触发差别范例的毛病,比方致命毛病、运转时毛病、编译时毛病、启动毛病以及用户触发的毛病。能够在php.ini中设置毛病报告体式格局(这里不做多的诠释)

毛病处置惩罚顺序

与非常处置惩罚顺序一样,我们也能够运用set_error_handler()注册全局毛病处置惩罚顺序,运用本身的逻辑体式格局阻拦并处置惩罚PHP毛病。我们要在毛病处置惩罚顺序中挪用die()或exit()函数。假如不挪用,PHP脚本会从失足的处所继承向下实行。以下:

set_error_handler(function ($errno,$errstr,$errfile,$errline)//经常使用的四个参数
{
	echo "毛病品级:".$errno."<br>毛病信息:".$errstr."<br>毛病的文件名:".$errfile."<br>毛病的行号:".$errline;
	exit();
});
 
trigger_error("this is a error");//自行触发的毛病
 
echo '一般';

以上就是php非常处置惩罚和毛病处置惩罚区分的细致内容,更多请关注ki4网别的相干文章!

标签:php