手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2010年01月20日的文章

twitter?

有人在群里发了twitter中的孙燕姿的信息,才突然想起,原来我好久没有做所谓的推客了。兴冲冲的跑到twitter去推了一下。顺便follow了两位美女,孙燕姿和萧亚轩

不过萧亚轩家中有事,N久没有更新了。不管了。。。怎么说也是个本家,关心一下

想想还有哪些明星可以让我follow的?国内的估计没有,毕竟她们恐怕也从未拍过墙一类的片子,也不知道墙为何物,过着自给自足的生活着呢。大概。。。

今天期末考试开始了。希望能有个好成绩,要求不高60足矣。

PHP分段屏蔽错误(异常)的方法

本文来自lukin的博客。。。
Lukin,lazyCMS的作者,如果你用过,或许会知道。。。

以下是原文

我是从asp转向php的,asp里面提供了下面的方法

代码1:

ASP/Visual Basic代码
  1. on error remuse next  
  2. '这里的代码出现的错误可以被屏蔽掉  
  3. on error goto 0  
----------------------------------------------------华丽的分割线-------------------------------------------------

转向php之后,查了一些资料貌似php没有提供类似这样的语法

直接使用error_reporting(0);关闭所有错误是很不明智的。所以,考虑使用@来抑制错误的发生,但是往往不如意。

我使用的set_error_handler('myerror')监听了一个函数,直接写@抑制错误的发生那是办不到的,照样会跳到myerror函数里面进行处理,后来看WordPress的源码,发现她屏蔽错误的方法:

代码2:

PHP代码
  1. $error_reporting = error_reporting(0);  
  2. // 这里发生的错误将被屏蔽  
  3. error_reporting($error_reporting); 

应用到我系统里面,发现此方法也不好用,照样会进入myerror函数进行错误处理。

继续狂翻php手册,仔细查看set_error_handler这个函数的说明,然后查看评论(一般看手册上的评论还是很有收获的),评论上的一段代码引起了我的注意:

代码3:

PHP代码
  1. // if error has been supressed with an @  
  2. if (error_reporting() == 0) {  
  3.    return;  

细想了一下,把这段代码加入到myerror里面,果然ok了!原来使用@的时候,error_reporting()会返回0

这样可以利用@屏蔽某个函数里面发生的错误了,也可以使用【代码2】的方法来进行分段屏蔽错误了。

--EOF--

我一般是用Set_error_handler的。。还有我记得Error_reporting是可以返回当前设置的等级的。先取回当前的等级,然后设置为0,解决完后再设置回去。其实也是就第二种了。。不过我觉得lukin应该是用这种的,即:

PHP代码
  1. <?php  
  2. $old = error_reporting();  
  3. error_reporting(0);  
  4. //code....  
  5. error_reporting($old);//恢复。。