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 相关文章推荐
一个ORACLE分页程序,挺实用的.
Oct 09 PHP
打造计数器DIY三步曲(下)
Oct 09 PHP
PHP 身份验证方面的函数
Oct 11 PHP
ThinkPHP中实例Model方法的区别说明
Aug 21 PHP
destoon安全设置中需要设置可写权限的目录及文件
Jun 21 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
May 27 PHP
PHP获取指定日期是星期几的实现方法
Nov 30 PHP
ThinkPHP实现简单登陆功能
Apr 28 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
Jan 28 PHP
PHP压缩图片功能的介绍
Mar 21 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
Oct 30 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
人大复印资料处理程序_查询篇
2006/10/09 PHP
第二节--PHP5 的对象模型
2006/11/16 PHP
php include加载文件两种方式效率比较
2010/08/08 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
2014/11/15 PHP
php内嵌函数用法实例
2015/03/20 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
php自动加载方式集合
2016/04/04 PHP
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
IE innerHTML,outerHTML所引起的问题
2009/06/04 Javascript
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
Vue 父子组件、组件间通信
2017/03/08 Javascript
Vue之Watcher源码解析(2)
2017/07/19 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
python生成随机验证码(中文验证码)示例
2014/04/03 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
小学教师岗位职责
2013/11/25 职场文书
建筑专业自荐信范文
2014/01/05 职场文书
活动总结格式范文
2014/04/26 职场文书
淘宝客服工作职责
2014/07/11 职场文书
党支部创先争优活动总结
2014/08/28 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
同意离婚答辩状
2015/05/22 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
2022/04/04 Python