分享一个php 的异常处理程序


Posted in PHP onJune 22, 2014

直接上代码

<?php
//exceptionHandle.php xiecongwen 20140620
//define('DEBUG',true);
/**
* Display all errors when APPLICATION_ENV is development.
*/
if (defined('DEBUG')) {
error_reporting(E_ALL);
ini_set("display_errors", 1);
}
if(!defined('DEBUG')){
/**
* 当发生重大错误时 写日志 并友好提示用户
* (PS:只所以将代码写在这里,是因为在其他地方注册时,出现问题无法调用配置函数.待完善...)
*/
function shutdownHandler()
{
/**
* 写日志 此处直接写在根目录下shutdownlog.txt
*/
$lasterror = error_get_last();
if($lasterror){
$error = strval(date("Y-m-d h:i:s")).'=>'."[SHUTDOWN] lvl:" . $lasterror['type'] . " | msg:" . $lasterror['message'] . " | file:" . $lasterror['file'] . " | ln:" . $lasterror['line']."\n";
file_put_contents('./log/'.date("Ymd").'shutdownlog.txt',$error,FILE_APPEND);
//友好提示用户
ob_end_clean();
die('对不起,我出错了!');
}
}
register_shutdown_function('shutdownHandler');
}
if(!defined('DEBUG')){
 
function errorHandler($errno, $errstr = '', $errfile = '', $errline = 0)
{
//写日志
$exception = new \ErrorException($errstr, 0, $errno, $errfile, $errline);
$msg = strval(date("Y-m-d h:i:s")).'=>'.'Type:'.getErrTypeName($errno).' '.getMsg($exception);
file_put_contents('./log/'.date("Ymd").'error.txt',$msg,FILE_APPEND);
switch ($errno)
{
case E_NOTICE:return ;
case E_DEPRECATED:return;
}
throw $exception;
}
function getErrTypeName($errno)
{
switch ($errno)
{
case E_NOTICE:return 'E_NOTICE' ;
case E_DEPRECATED:return 'E_DEPRECATED';
default:return $errno;
}
}
function exceptionHandler($ex)
{
$msg = strval(date("Y-m-d h:i:s")).'=>'.getMsg($ex);
file_put_contents('./log/'.date("Ymd").'exception.txt',$msg,FILE_APPEND);
}
function getMsg($exception)
{
//获取最准确的异常 
while($exception->getPrevious())$exception = $exception->getPrevious();
$msg = ' Message: '.$exception->getMessage();
$msg .= ' File: '.$exception->getFile().':'.$exception->getLine()."\n";
return $msg;
}
set_error_handler('errorHandler',E_ALL);
set_exception_handler('exceptionHandler');
}
?>
PHP 相关文章推荐
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
Oct 13 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
PHP数据过滤的方法
Oct 30 PHP
php字符串分割函数用法实例
Mar 17 PHP
Smarty中的注释和截断功能介绍
Apr 09 PHP
PHP实现的简单网络硬盘
Jul 29 PHP
php数据访问之增删改查操作
May 09 PHP
PHP写的简单数字验证码实例
May 23 PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 PHP
PHP基于openssl实现的非对称加密操作示例
Jan 11 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
Jun 22 #PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
Jun 22 #PHP
PHP延迟静态绑定示例分享
Jun 22 #PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 #PHP
解决cPanel无法安装php5.2.17
Jun 22 #PHP
destoon设置自定义搜索的方法
Jun 21 #PHP
destoon后台网站设置变成空白的解决方法
Jun 21 #PHP
You might like
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
php在数组中查找指定值的方法
2015/03/17 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
浅谈javascript中的作用域
2012/04/07 Javascript
jquery 层次选择器siblings与nextAll的区别介绍
2013/08/02 Javascript
alert出数组中的随即值代码
2014/09/25 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
python调用cmd复制文件代码分享
2013/12/27 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
简单了解python的break、continue、pass
2019/07/08 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
澳大利亚厨房和家用电器购物网站:Bing Lee
2021/01/11 全球购物
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
国际商务专业求职信
2014/07/15 职场文书
雨花台导游词
2015/02/06 职场文书
python用字节处理文件实例讲解
2021/04/13 Python
MyBatis 动态SQL全面详解
2021/10/05 MySQL
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python