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 相关文章推荐
PHP中GET变量的使用
Oct 09 PHP
PHP加速 eAccelerator配置和使用指南
Jun 05 PHP
PHP的5个安全措施小结
Jul 17 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
Mar 11 PHP
PHP实现的方程求解示例分析
Nov 11 PHP
highchart数据源纵轴json内的值必须是int(详解)
Feb 20 PHP
php生成word并下载代码实例
Mar 15 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 PHP
PHP单元测试配置与使用方法详解
Dec 27 PHP
PHP使用非对称加密算法RSA
Apr 21 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
一个简单的MySQL数据浏览器
2006/10/09 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
CI框架中site_url()和base_url()的区别
2015/01/07 PHP
PHP中大于2038年时间戳的问题处理方案
2015/03/03 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
jquery 日期分离成年月日的代码
2010/05/14 Javascript
更优雅的事件触发兼容
2011/10/24 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
今天是星期几的4种JS代码写法
2013/09/17 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
Vue项目全局配置微信分享思路详解
2018/05/04 Javascript
mpvue跳转页面及注意事项
2018/08/03 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
Python是什么 Python的用处
2020/05/26 Python
电气自动化个人求职信范文
2014/02/03 职场文书
公司档案管理制度
2015/08/05 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
MySQL数据库事务的四大特性
2022/04/20 MySQL