码迷,mamicode.com
首页 > Web开发 > 详细

php错误和异常处理笔记

时间:2015-03-05 16:47:30      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

关于php的错误和异常处理的使用最近终于搞清楚了,下面是简要笔记:
0、程序处理的原则:

  0、首先是中断,即粗暴的停止程序,并且不提供错误信息,在php中就是die()和exit(),只是简单的输出一条消息,比粗暴中断有了一定进步;

  1、然后是错误处理,就是在中断基础上增加关于错误的信息,以便调试,就是php中默认的错误处理方式(缺点见下);

  2、为了弥补缺点,php允许程序员自定义错误处理函数;
1、php自身的错误处理方式对于web用户是不友好的(warning级别的错误不影响后续的程序运行,而error和notice级别的错误会终止程序的运行),而且会暴露程序的一些信息。所以真正的php程序是屏蔽所有报错信息,并自定义自己的处理函数。
2、这个自定义函数形如:handler(int $errno,string $errstr [,string $errfile [,int $errline [,array $errcontext ]]]),并且需要通过set_error_handler进行调用。handler函数的参数是由php内部传入的,就是原本传给内部错误处理函数的参数。
3、注意set_error_handler函数可以多次使用,会覆盖上一次的错误处理函数,可以使用restore_error_handler函数重新指向上一个错误处理函数

4、对应的还有set_exception_handler和restore_exception_handler函数,区别是这两个函数是用来处理异常的。异常是php5中定义的,和其他语言try,catch,finally,throw结构相似。throw用于抛出异常,try用于检测一段代码并能够检测到异常,然后由catch结构进行处理。而这两个函数是用于处理未被try检测部分代码的异常信息。

 

那php异常和错误有何区别那?

php的异常是在php5版本中出现的,基础是Exception(所有异常基类)和ErrorException两个类。

下面解释了为何需要异常处理机制:
当函数遇到return时会结束运行并返回,且返回值只有一个,可以据此来做判断
但当new一个新对象时,即使类内某一部分出错,同样会继续运行并返回一个完整的对象(就像汽车即使漏油也是汽车,出错不能发现)
所以为了查看对象形成过程中是否出错需要异常处理机制
!!!异常处理机制通常用于处理类中的错误,但是也可以处理函数中的错误

 

那么在实际的php项目中,是怎样工作的呢?

1、设置报错级别为0,即不对用户报错

2、设置调试标识,开发过程中对程序员显示错误信息以便调试;对用户则显示错误页面即可

3、有关错误信息的设置是三个函数的组合:
        register_shutdown_function();
        set_error_handler();
        set_exception_handler();

参考:http://bbs.phpchina.com/thread-212378-1-1.html

  http://yanue.net/post-99.html

php错误和异常处理笔记

标签:

原文地址:http://www.cnblogs.com/songfeilong2325/p/4315461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!