PHP中使用register_shutdown_function函数截获fatal error示例


Posted in PHP onApril 21, 2015

我们在做项目时,偶尔会因为不谨慎而出现fatal error。如果display_errors设置成off,那用户将会看到的是一个空白的页面。若设置成了on,那fatal error的信息将会呈现出来(当然正常的人都不会这样干)。

那我们有什么方法可以提前截获到fatal error,并用我们自己自定义的友好形式反馈给用户呢。PHP中有一个叫做  register_shutdown_function 的函数,可以让我们设置一个当执行关闭时可以被调用的另一个函数.也就是说当我们的脚本执行完成或意外死掉导致PHP执行即将关闭时,这个函数将会被调用。
下面请看一个例子:

<?php

$flag = false;

function deal_error(){

    global $flag;

    if (!$flag){

        die("粗问题啦,请稍后再试");

    }

    return false;

}

register_shutdown_function("deal_error");

//将因为致命错误而失败

//$obj = new NotExistClass(); //引入未定义的类

require('./test.php');

$flag = true;

我们在程序入口处,设置flag为false,最后设置成true,表明程序正常执行。若flag最后不为true,说明在中间某个地方死掉了,此时就会调用register_shutdown_function,输出我们自定义的错误结果。

如上面的类未定义、引入不存在的文件(必须使用require或require_once)等会导致fatal error。当然,要是你程序是缺个标点或者多了个特殊字符啥的,那就没办法了。

PHP 相关文章推荐
php的curl实现get和post的代码
Aug 23 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
Jan 27 PHP
phpmail类发送邮件函数代码
Feb 20 PHP
将php数组输出html表格的方法
Feb 24 PHP
php检测useragent版本示例
Mar 24 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
PHP技术开发微信公众平台
Jul 22 PHP
学习php设计模式 php实现访问者模式(Visitor)
Dec 07 PHP
php使用高斯算法实现图片的模糊处理功能示例
Nov 11 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
phpinfo的知识点总结
Oct 10 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 #PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 #PHP
PHP使用递归生成文章树
Apr 21 #PHP
php实现的美国50个州选择列表实例
Apr 20 #PHP
PHP也能干大事之PHP中的编码解码详解
Apr 20 #PHP
php中使用base HTTP验证的方法
Apr 20 #PHP
PHP加密解密类实例分析
Apr 20 #PHP
You might like
php数组合并与拆分实例分析
2015/06/12 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
Vue SSR 即时编译技术的实现
2020/05/06 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
解读Django框架中的低层次缓存API
2015/07/24 Python
python处理html转义字符的方法详解
2016/07/01 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
Python字典底层实现原理详解
2019/12/18 Python
django配置app中的静态文件步骤
2020/03/27 Python
美国美妆网站:B-Glowing
2016/10/12 全球购物
俄罗斯皮肤健康中心:Pharmacosmetica.ru
2020/02/22 全球购物
实习生个人的自我评价
2013/12/08 职场文书
考试不及格检讨书
2014/01/09 职场文书
工艺工程师岗位职责
2014/03/04 职场文书
政府个人对照检查材料
2014/08/28 职场文书
学生偷窃检讨书
2014/09/25 职场文书
教师工作证明范本
2015/06/12 职场文书
我爱我班主题班会
2015/08/13 职场文书
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript