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
Nov 25 PHP
在PHP中使用与Perl兼容的正则表达式
Nov 26 PHP
由php if 想到的些问题
Mar 22 PHP
php 动态添加记录
Mar 10 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
Apr 08 PHP
PHP变量赋值、代入给JavaScript中的变量
Jun 29 PHP
实例讲解yii2.0在php命令行中运行的步骤
Dec 01 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
Mar 13 PHP
PHP实现QQ登录的开原理和实现过程
Feb 04 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 PHP
PHP CURL中传递cookie的方法步骤
May 09 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四舍五入、取整、round函数使用示例
2015/02/06 PHP
php四种定界符详解
2017/02/16 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
jquery的ajax简单结构示例代码
2014/02/17 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
2015/08/07 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
简单了解Vue computed属性及watch区别
2020/07/10 Javascript
[01:16:28]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第二场 2月23日
2021/03/11 DOTA
Python 学习笔记
2008/12/27 Python
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
Python中import机制详解
2017/11/14 Python
Python数据可视化图实现过程详解
2020/06/12 Python
Python3+selenium配置常见报错解决方案
2020/08/28 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
Charlotte Tilbury澳大利亚官网:英国美妆品牌
2018/10/05 全球购物
2013届毕业生求职信范文
2013/11/20 职场文书
公安局副政委班子个人对照检查材料
2014/10/04 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
Nginx搭建rtmp直播服务器实现代码
2021/03/31 Servers
Go 自定义package包设置与导入操作
2021/05/06 Golang
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS
Linux安装Docker详细教程
2022/07/07 Servers