上一篇文章讲了《PHP之自定义错误处理器》,那么今天分享的是自定义错误触发器,那么触发器和处理器有什么关系和区别呢?接下来慢慢和大家分享。
首先我们来解释一下什么是触发器,从W3school上定义为在脚本中用户输入数据的位置,当用户的输入无效时触发的错误我们就可以称为错误触发器,那么在 PHP 中,这个任务由 trigger_error() 函数来完成的。
例如:
<?php $page = 100; if ($page>200) { //调用触发器 trigger_error("你输入的页数过大"); exit(); } ?>
运行后显示:
Notice: 你输入的页数过大 in D:webtesterror3.php on line 5
function my_error($errno,$errmsg){ echo "错误号:".$errno."<br>"; echo "错误信息:".$errmsg; }
然后同样通过set_error_handler()函数来重写掉默认的错误触发器显示,如下:
set_error_handler("my_error",E_USER_WARNING);
当然,这里的第二个参数建议填写以E_USER开头的错误类型,其中包含以下几种类型选择:
- E_USER_ERROR – 致命的用户生成的 run-time 错误。错误无法恢复。脚本执行被中断。
- E_USER_WARNING – 非致命的用户生成的 run-time 警告。脚本执行不被中断。
- E_USER_NOTICE – 默认。用户生成的 run-time 通知。脚本发现了可能的错误,也有可能在脚本运行正常时发生。
而同事,当你选择了其中的一种错误类型后,我们需要在之前的程序错误触发器中增加一个同等类型的错误类型,否则不会正常运行自定义错误触发器显示,所以添加trigger_error()函数的第二个参数错误类型同样为set_error_handler()函数的错误类型,即E_USER_ERROR、E_USER_WARNING或者E_USER_NOTICE,如下:
<?php $page = 100; if ($page>200) { //调用触发器 trigger_error("你输入的页数过大",E_USER_WARNING); exit(); } ?>
此时执行编写的程序页面显示如下:
错误号:512
错误信息:你输入的页数过大
然后大家再返回到之前分享的《PHP之自定义错误处理器》进行比较,你就会很清晰的知道他们的区别了。
好了,今天就分享这个,希望大家继续在喜欢的行业路上坚定不移的走下去,总有一天你会成就自己的,无论什么情况。
评论前必须登录!
注册