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 相关文章推荐
安装APACHE
Jan 15 PHP
《PHP编程最快明白》第八讲:php启发和小结
Nov 01 PHP
浅析php header 跳转
Jun 17 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
php常见的魔术方法详解
Dec 25 PHP
PHP开发中csrf攻击的简单演示和防范
May 07 PHP
php实现的错误处理封装类实例
Jun 20 PHP
thinkPHP框架中执行事务的方法示例
May 31 PHP
PHP调用微博接口实现微博登录的方法示例
Sep 22 PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 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禁止页面缓存的代码
2011/10/23 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
HTML5附件拖拽上传drop &amp; google.gears实现代码
2011/04/28 Javascript
用RadioButten或CheckBox实现div的显示与隐藏
2013/09/21 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
mock.js模拟数据实现前后端分离
2019/07/24 Javascript
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
Python实现名片管理系统
2020/02/14 Python
零基础小白多久能学会python
2020/06/22 Python
详解Python中的文件操作
2021/01/14 Python
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
酒吧副总经理岗位职责
2013/12/10 职场文书
本科生职业生涯规划书范文
2014/01/21 职场文书
保密承诺书
2014/03/27 职场文书
团代会宣传工作方案
2014/05/08 职场文书
学校校庆演讲稿
2014/05/22 职场文书
会计系毕业求职信
2014/08/07 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
安全生产培训心得体会
2016/01/18 职场文书
2016年全国爱牙日宣传活动总结
2016/04/05 职场文书
Python实现位图分割的效果
2021/11/20 Python