PHP中使用register

   这篇文章主要介绍了PHP中使用register_shutdown_function函数截获fatal error示例,需要的朋友可以参考下

  我们在做项目时,偶尔会因为不谨慎而出现fatal error。如果display_errors设置成off,那用户将会看到的是一个空白的页面。若设置成了on,那fatal error的信息将会呈现出来(当然正常的人都不会这样干)。

  那我们有什么方法可以提前截获到fatal error,并用我们自己自定义的友好形式反馈给用户呢。PHP中有一个叫做 register_shutdown_function 的函数,可以让我们设置一个当执行关闭时可以被调用的另一个函数.也就是说当我们的脚本执行完成或意外死掉导致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。当然,要是你程序是缺个标点或者多了个特殊字符啥的,那就没办法了。

时间: 2024-09-24 08:39:27

PHP中使用register的相关文章

fatal error:php中通过register

今天发现php中,如果要记录fatal error的时候,可以实用一个不错的函数, 叫register_shutdown_function,小结如下:   register_shutdown_function可以让我们设置一个当执行关闭时可以被调用的另一个函数.也就是说当我们的脚本执行完成或意外死掉 导致PHP执行即将关闭时,我们的这个函数将会被调用.所以,我们可以使用在脚本开始处设置一个变量为false,然后在脚本末尾将之设置为true的方 法,让PHP关闭回调函数检查脚本完成与否. 如果我们

SharePoint中如何在Feature中动态Register/Remove HttpModule

在SharePoint开发时,你会遇到这样一个问题,Global.asax去哪儿?怎样添加一个Global.asax?怎样在Application_Start这个事件处理程序里设置初始化?似乎在Visual Studio中无法像纯ASP.NET开发那样轻松添加一个Global.asax. 当然找到这个Global.asax也不难,打开IIS,右键浏览对应网站,在网站根目录下你可以找到Global.asax.比如我的网站部署在C:\inetpub\wwwroot\wss\VirtualDirect

java-JAVA中我想在一个界面中获得另一个界面的JRadioButton的值。

问题描述 JAVA中我想在一个界面中获得另一个界面的JRadioButton的值. 两个java文件 我想在MyFrame.java 中获得Register.java中JRadioButton(男or女)(已经在grop中了) 在MyFrame中NEW了Register对象.用Regiter对象register.getRadio().getText(); 老报错说不行. 解决方案 第一,没贴出来报什么错误第二,没说清楚这两个java文件是怎么配合的,在MyFrame中new的Regiser对象就

@ Register 属性各有什么用?

问题描述 <%@RegisterTagPrefix="Hishop"Namespace="Hishop.Web.Controls"Assembly="Hishop.Web.Controls"%>TagPrefixNamespaceAssembly请形像说明,最好有例子! 解决方案 解决方案二:.NETFramework常规参考@Register将别名与命名空间及类名关联起来,以便在自定义服务器控件语法中使用简明的表示法.<%@R

Laravel中注册Facades的步骤详解_php实例

本文讲述了Laravel中注册Facades的步骤.分享给大家供大家参考,具体如下: 在Laravel中将类注册为Fcade可以使用Ioc容器,每次使用这个类的时候只会初始化一次类,类似单例模式,而且可以像使用静态方法调用类的方法,下面是在Laravel中注册Facades的步骤. 1.在项目app目录的Providers/AppServiceProvider.php中的register方法新增方法,代码如下. /** * Register any application services. *

在Web中如何使用Windows控件?

    最近做的一个Web版的视频会议项目,需要在网页中播放来自远程摄像头采集的实时视频,我们已经有了播放远程实时视频的使用C#编写的windows控件,如何将其嵌入到网页中去了?这需要使用一种古老的技术,ActiveX. 1.将.Net控件转化为ActiveX控件     首先要做的就是将我们的windows视频播放控件转化为ActiveX控件.先看看我们视频播放控件的定义,其基于OMCS实现,相当简单: public partial class CameraVideoPlayer : Use

linux-3.2.36内核启动2-setup_arch中的内存初始化1(arm平台 分析高端内存和初始化memblock)【转】

转自:http://blog.csdn.net/tommy_wxie/article/details/17093307 上一篇微博留下了这几个函数,现在我们来分析它们         sanity_check_meminfo();         arm_memblock_init(&meminfo, mdesc);         paging_init(mdesc);         request_standard_resources(mdesc);   在上一微博有展现根据启动参数初始化

Magento 常用方法和插件

得到路径E:\ddl\Trunk\3_Development\03_Sourcecode\test.com\www\app\design\frontend\default\ddl_v2\template Java代码   Mage::getDesign()->getBaseDir(array('_area'=>'frontend','_package'=>'default','_theme'=>'ddl_v2','_type'=>'template'))   获得客户IP:

用C++ Builder的MD5控件实现软件防护

一.共享==免费? 随着Internet大行其道,"共享+注册"模式日渐成为程序员发布自己软件的主要手段,但是随之而来的破解手段也越来越高明.如何保护自己的劳动成果不被暴力破解或修改?用MD5摘要值验证是一个很常用的方法. MD5作为一个公开算法,实现的方法很多,比如开源软件.Windows自带的API等,C++ Builder和Delphi中集成的Indy里面也有现成的MD5控件.用API实现MD5虽然效率高,但是毕竟太繁琐,具体方法可以参阅MSDN上crypt开头的那几个函数说明.