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 相关文章推荐
mysql 全文搜索 技巧
Apr 27 PHP
PHP 读取和修改大文件的某行内容的代码
Oct 30 PHP
php 字符串函数收集
Mar 29 PHP
深入分析php之面向对象
May 15 PHP
php生成zip压缩文件的方法详解
Jun 09 PHP
PHP的引用详解
Feb 22 PHP
php简单统计中文个数的方法
Sep 30 PHP
PHP使用递归算法无限遍历数组示例
Jan 13 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
May 23 PHP
PHP模型Model类封装数据库操作示例
Mar 14 PHP
详解PHP PDO简单教程
May 28 PHP
php7中停止php-fpm服务的方法详解
May 09 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代码包装修正版
2008/03/15 PHP
php 编写安全的代码时容易犯的错误小结
2010/05/20 PHP
PHP include_path设置技巧分享
2011/07/03 PHP
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
js判断屏幕分辨率的代码
2013/07/16 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
常用jQuery代码分享
2015/07/14 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
2017/03/25 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
微信小程序模拟cookie的实现
2018/06/20 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
python实现寻找最长回文子序列的方法
2018/06/02 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
python模拟实现斗地主发牌
2020/01/07 Python
Python 中由 yield 实现异步操作
2020/05/04 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
纯HTML+CSS3制作导航菜单(附源码)
2013/04/24 HTML / CSS
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
预备党员思想汇报范文
2014/01/11 职场文书
政府门卫岗位职责
2014/04/29 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书