PHP 自定义错误处理函数的使用详解


Posted in PHP onMay 10, 2013
function myErrorHandler($errno, $errstr, $errfile, $errline){
    if(!(error_reporting() &$errno)){return;}
    switch ($errno){
    case E_USER_ERROR:
        echo "<b>My ERROR</b> [$errno] $errstr<br/>";
        echo "错误行:$errline 在文件:$errfile之中<br/>";
        echo " PHP版本: " .PHP_VERSION ." (" .PHP_OS .")<br/>";
        break;
    case E_USER_WARNING:
        echo "<b>My WARNING</b> [$errno] $errstr<br/>";
        break;
    case E_USER_NOTICE:
        echo "<b>My NOTICE</b> [$errno] $errstr<br />";
        break;
    default:
        echo "Unknown error type: [$errno] $errstr<br />";
        break;
    }
    return true;
}
function trigger_test($age){//抛出错误的测试函数
    if($age <= 0 || $age > 999) trigger_error("年龄不合法:$age岁", E_USER_ERROR);
    if($age < 18) trigger_error("未成年:$age岁", E_USER_WARNING);
    if($age > 40 && $age < 100) trigger_error("年龄稍大:$age岁", E_USER_NOTICE);
}
//如果只是简单统一地处理错误:
$errorHandler = set_error_handler("myErrorHandler");
trigger_test(1000);//会抛出一个error级的错误

function myError($errno, $errstr, $errfile, $errline){
    print_r(func_get_args());
    //具体处理方法
}
function myWarning($errno, $errstr, $errfile, $errline){
    print_r(func_get_args());
    //具体处理方法
}
function myNtice($errno, $errstr, $errfile, $errline){
    print_r(func_get_args());
    //具体处理方法
}
//如果要分别处理不同错误级别:
set_error_handler('myError',E_USER_ERROR);
set_exception_handler('myWarning',E_USER_WARNING);
set_exception_handler('myNtice',E_USER_NOTICE);
trigger_error('故意抛出个错误,还是很严重的哪一种!',E_USER_ERROR);
PHP 相关文章推荐
为php4加入动态flash文件的生成的支持
Oct 09 PHP
杏林同学录(九)
Oct 09 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
PHP中break及continue两个流程控制指令区别分析
Apr 18 PHP
php错误、异常处理机制(补充)
May 07 PHP
有关PHP性能优化的介绍
Jun 20 PHP
微信支付开发告警通知实例
Jul 12 PHP
PHP实现查询手机归属地的方法详解
Apr 28 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
Laravel 批量更新多条数据的示例
Nov 27 PHP
php微信开发之图片回复功能
Jun 14 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
Apr 26 PHP
PHP 类相关函数的使用详解
May 10 #PHP
解析PHP缓存函数的使用说明
May 10 #PHP
基于PHP选项与信息函数的使用详解
May 10 #PHP
PHP 观察者模式的实现代码
May 10 #PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
May 10 #PHP
基于php实现长连接的方法与注意事项的问题
May 10 #PHP
Apache服务器无法使用的解决方法
May 08 #PHP
You might like
如何在PHP中使用Oracle数据库(2)
2006/10/09 PHP
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
js单向链表的具体实现实例
2013/06/21 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
使用jquery prev()方法找到同级的前一个元素
2014/07/11 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
基于JavaScript FileReader上传图片显示本地链接
2016/05/27 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
[01:56]2014DOTA2西雅图邀请赛 MVP外卡赛老队长精辟点评
2014/07/09 DOTA
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
Python中for循环控制语句用法实例
2015/06/02 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
js实现弹框效果
2021/03/24 Javascript
病危通知单
2015/04/17 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python