[PHP] Trigger_error 趣谈
来源:互联网 发布:社交网络营销策划方案 编辑:程序博客网 时间:2024/05/22 03:29
最近在debug时,发现一个很有趣的关于Trigger_error用法的问题。
该bug的表象是程序在生成某条重要业务数据之前突然断了,所以我就一路追代码,一直追到非常底层的位置,才抓住了代码断掉的位置。在这里并没有看到常见的程序中断的指令,如die(), exit()等。而是看到了如下代码:
trigger_error('age you input must>=0',E_USER_ERROR);
由于对trigger_error语法不熟悉,遂和同事讨论为何代码会断在这里。同事纷纷尝试如下写法:
trigger_error('age you input must>=0');
trigger_error('age you input must>=0',E_USER_WARNING);
trigger_error('age you input must>=0',E_USER_NOTICE);
最终发现,以上三种写法都不会中断程序的运行,只是会有一行Warning提示。而只有E_USER_ERROR会将程序立刻中断。在翻阅了众多博客和文章后找到W3C中的一段解释(链接:http://www.w3school.com.cn/php/php_ref_error.asp):
E_USER_ERROR类似于E_ERROR,区别处在于E_USER_ERROR是在代码中由trigger_error方法产生的。但其原理都相同,即:“运行时致命的错误。不能修复的错误。终止执行脚本。”
这也使得我们反思了日常工作中对trigger_error的使用,尤其需要注意第二个参数的使用。因为一旦使用E_USER_ERROR,在抛出错误时,程序也会随之中断,从而产生业务流程中断等问题。
最终,因为有不同的业务场景会走到该段代码,有一些业务场景确实是需要在这里进行立刻中断的,所以我们只在我们发现问题的业务场景上进行了前置错误处理,使得类似的error在被trigger之前即被处理掉。
- [PHP] Trigger_error 趣谈
- PHP trigger_error() 函数
- PHP set_error_handler() 函数与 trigger_error() 函数的配合使用
- PHP中的错误处理set_error_handler()与trigger_error()的问题
- trigger_error使用方法
- trigger_error()函数
- PHP 的异常处理、错误处理:error_reporting,try-catch,trigger_error,set_error_handler,set_exception_handler,regis
- PHP错误处理:die()Vs trigger_error()Vs throw异常
- set_error_handler和trigger_error函数
- 趣谈MySQL
- 找工作趣谈
- 面试趣谈
- 企业文化趣谈
- 趣谈“解耦”
- 面试趣谈
- 生活趣谈
- 趣谈for
- MES 趣谈
- linux shell脚本总结一
- 对Android中ActionBar中setDisplayHomeAsUpEnabled和setHomeButtonEnabled和setDisplayShowHomeEnabled方法的理解
- C++理解
- BFS (图)——Codeforces 788 C. The Great Mixing
- 基于IMOOC强力django+杀手级xadmin 打造上线标准的在线教育平台课程的学习(4)
- [PHP] Trigger_error 趣谈
- 不规则进度条思路记载
- Java1.5泛型指南中文版
- 排序算法
- Markdown使用
- django 数据库查询—如何获取指定范围的数据
- mysql5.7.17解压版安装
- Base128 基于Base64的变种编码
- eclipse使用技巧心得分享