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 相关文章推荐
FirePHP 推荐一款PHP调试工具
Apr 23 PHP
php方法调用模式与函数调用模式简例
Sep 20 PHP
PHP flush()与ob_flush()的区别详解
Jun 03 PHP
国产PHP开发框架myqee新手快速入门教程
Jul 14 PHP
php中将一个对象保存到Session中的方法
Mar 13 PHP
php给一组指定关键词添加span标签的方法
Mar 31 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
Jul 01 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
Nov 16 PHP
php 将json格式数据转换成数组的方法
Aug 21 PHP
对php 判断http还是https,以及获得当前url的方法详解
Jan 15 PHP
php与阿里云短信接口接入操作案例分析
May 27 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安全配置
2006/12/06 PHP
在PHP中养成7个面向对象的好习惯
2010/01/28 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
ThinkPHP分页实例
2014/10/15 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
jQuery实现调整表格单列顺序完整实例
2016/06/20 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
iview在vue-cli3如何按需加载的方法
2018/10/31 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
python3实现随机数
2018/06/25 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
出国签证在职证明
2014/01/16 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
学习交流会主持词
2014/04/01 职场文书
研讨会主持词
2014/04/02 职场文书
施工质量承诺书范文
2014/05/30 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript