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
Dec 14 PHP
php Try Catch异常测试
Mar 01 PHP
PHP memcache扩展的三种安装方法
Apr 26 PHP
通用PHP动态生成静态HTML网页的代码
Mar 04 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
Jun 04 PHP
PHP读取txt文件的内容并赋值给数组的代码
Nov 03 PHP
第二章 PHP入门基础之php代码写法
Dec 30 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
ThinkPHP中的关联模型注意点
Jun 16 PHP
PHP封装的Twitter访问类实例
Jul 18 PHP
php实现仿写CodeIgniter的购物车类
Jul 29 PHP
php解决crontab定时任务不能写入文件问题的方法分析
Sep 16 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网站地图生成类示例
2014/01/13 PHP
分享php分页的功能模块
2015/06/16 PHP
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
js实现二级菜单点击显示当前内容效果
2018/04/28 Javascript
详解vue中axios的封装
2018/07/18 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
2019/04/08 Javascript
vue实现点击追加选中样式效果
2019/11/01 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
[01:22:29]真视界:2019年国际邀请赛总决赛
2020/01/29 DOTA
python在命令行下使用google翻译(带语音)
2014/01/16 Python
[原创]使用豆瓣提供的国内pypi源
2017/07/02 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
3种python调用其他脚本的方法
2020/01/06 Python
通过实例解析Python return运行原理
2020/03/04 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
结束运行python的方法
2020/06/16 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
苹果香港官方商城:Apple香港
2016/09/14 全球购物
教师岗位职责
2013/11/17 职场文书
建筑公司文秘岗位职责
2013/11/29 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
超市促销活动方案
2014/03/05 职场文书
出国留学计划书
2014/04/27 职场文书
计划生育个人总结
2015/03/02 职场文书
教师聘用意向书
2015/05/11 职场文书
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB