荣幸的是,这里有解决办法。PHP具有内置东西,能够让开发人员捕获剧本毛病然后将它们转到自定义的毛病处理器。此时则能够对处理器举行编程显现更多关于毛病的细致信息。(引荐进修:PHP编程从入门到通晓)
还能够将毛病写入文件或数据库以采用补救措施。有时候还能够对处理器编写顺序疏忽毛病音讯。
本文中,我将论述怎样运用PHP的毛病处理API构建用户自定义的毛病处理器,而且申明怎样以简朴而友爱的体式格局显现和治理剧本的毛病信息。
毛病范例和报告级别
我们从最基本的最先。PHP有三种最基本的毛病范例,从初级到高等分别为:注意、正告和毛病(或致命毛病)。通常情况下,注意和正告不会停止顺序;然则致命毛病则是风险毛病(比方,挪用一个没有定义的函数或参考一个不存在的对象),将致使顺序中断。这些毛病有能够在启动、剖析、编译或运行时发作。
关键字如E_NOTICE, E_ERROR等用于表明毛病的差别范例和品级。在PHP手册上能够获得它们的细致信息列表。
剧本阶段毛病显现由error_reporting()函数举行掌握。这一函数针对差别的毛病品级设置差别的参数。表A给出了运用此函数报告正告和致命毛病的剧本顺序。
表A
<?php // display warnings and errors error_reporting(E_WARNING | E_ERROR); // this will generate a notice, which will never be displayed echo $undefinedVar; // this will generate a fatal error, which will be displayed callUndefFunc(); ?>
将表B中的代码与上面的举行比较发明,Listing B中隐蔽毛病信息以至隐蔽致命信息,使得毛病信息不会被显现出来。
表B
<?php // turn off error display // no errors will be displayed error_reporting(0); // this will generate a notice echo $undefinedVar; // this will generate a fatal error callUndefFunc(); ?>
表C中的代码将一切毛病信息以至简朴的注意事项都显现出来:
表C
<?php // all errors will be displayed error_reporting(E_ALL); // this will generate a notice echo $undefinedVar; // this will generate a fatal error callUndefFunc(); ?>
如以上3个例子所示,error_reporting()函数在掌握毛病发作时,在屏幕上显现内容非常重要。这里的关键字是displayed,其表达的意义是毛病不被显现而不是毛病没有发作。因而,发作致命毛病时(比方不正确的函数挪用),顺序将被停止;然则,此时没有任何音讯显现给用户。
以上就是php自定义毛病处理器的细致内容,更多请关注ki4网别的相干文章!