PHP5 面向对象
1
Created by 刀客羽朋
第五章 PHP5 异常处理
PHP5 面向对象
2
Created by 刀客羽朋
目录
5.1 PHP中的错误信息 .............................................................................................................3
5.1.1 php.ini中配置错误消息...........................................................................................3
5.1.2 php中错误消息处理................................................................................................4
5.1.3 php代码中调整错误级别........................................................................................5
5.1.4 自定义错误处理.....................................................................................................6
5.2 PHP5 中的SPL模块 ...........................................................................................................7
5.2.1 什么是SPL..............................................................................................................7
5.2.2 spl.php中的异常处理类 ..........................................................................................8
5.2.3 spl.php中的其它异常类 ........................................................................................11
5.3 PHP5 异常捕获 ................................................................................................................14
5.3.1 异常实例................................................................................................................14
5.3.2 抛出异常...............................................................................................................15
5.3.3 在代码中捕获异常...............................................................................................16
5.3.4 在代码中捕获异常(2)...........................................................................................18
5.3.5 一个catch块处理多种异常 ..................................................................................19
5.3.6 多个catch块处理异常 ...........................................................................................20
5.3.7 异常处理块嵌套....................................................................................................23
5.3.8 异常向外抛出.......................................................................................................24
5.4 PHP5 自定义异常 ............................................................................................................25
5.4.1 自定义异常............................................................................................................25
5.5 异常处理实例...................................................................................................................26
5.5.1 验证实例................................................................................................................26
5.5.2 验证实例代码........................................................................................................29
5.6 小结...................................................................................................................................34
PHP5 面向对象
3
Created by 刀客羽朋
5.1 PHP 中的错误信息
5.1.1 php.ini 中配置错误消息
在 PHP4 中,没有异常 Exception 这个概念,只有 错误 Error。我们可以通过修改 php.ini
文件来配置用户端输出的错误信息。
在 php.ini 中,一个分号 ; 表示注释。
Php.ini 将能够显示的错误类型分为如下种类。
; E_ALL -所有的错误和警告,(不包含 E_STRICT).
; E_ERROR -致命的运行时错误
; E_RECOVERABLE_ERROR - 几乎致命的运行时错误
; E_WARNING - 运行时的警告(非致命错误)
; E_PARSE -编译时解析错误
; E_NOTICE - 运行时的提示,这些提示常常是代码中的 bug 引起的,也许是故意的(如使用一
个未初始化的变量,事实上它被自动初始化成一个空字符串) 。
; E_STRICT - 运行时提示,能够给于 PHP 建议,以改变你的代码,以获得最好的协同性,并完
善代码的兼容性。
; E_CORE_ERROR - PHP 初始化启动过程中的致命错误。
; E_CORE_WARNING - PHP 初始化启动过程中的非致命错误。
; E_COMPILE_ERROR - 致命的编译错误。
; E_COMPILE_WARNING – 编译错误(非致命的错误)。
; E_USER_ERROR - 用户错误信息。
; E_USER_WARNING - 用户警告信息。
; E_USER_NOTICE -用户提示信息。;
在 php.ini 中 error_reporting 控制输出到用户端的消息种类。
以下几种是 php.ini 中推荐的几种配置。
error_reporting = E_ALL
表示输出所有的信息。
error_reporting = E_ALL & ~E_NOTICE 表示输出所有的错误,除了提示。
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
表示输出所有的 ERROR 信息。
在 php.ini 中,display_errors 可以设置是否将以上设置的错误信息输出到用户端。
display_errors = On 输出到用户端(调试代码时候,打开这项更方便)
display_errors = OFF 消息将不会输出到用户端(最终发布给用户时记得改成 off)
PHP5 面向对象
5.1.2 php 中错误消息处理
在 php 中,对于错误处理非常的宽松。php 系统会尽量让程序运行下去,除非遇到致命
错误。
例 5-2-1.php
第 5 行,直接打印一个未赋值变量$t 时候,系统报出一个 Notice,未定义变量。
第 7 行,做除以 0 的运算时,系统报出一个 Warning,提示有除以 0 这样的警告,程序
依然在运行。
第 9 行,当实例化一个不存在的类的时候,发生致命错误,程序终止运行。
再次提示:如果不想显示错误信息给用户看到,设置 php.ini 中
display_errors = OFF
4
Created by 刀客羽朋
PHP5 面向对象
5.1.3 php 代码中调整错误级别
除了在 php.ini 文件中可以调整错误消息的显示级别外,在 php 代码中也可以自定义消
息显示的级别。
PHP 提供了一个方便的调整函数。
int error_reporting ( [int level] )
使用这个函数可以定义当前 php 页面中错误消息的显示级别。
参数 level 使用了二进制掩码组合的方式。
value constant value constant
1 E_ERROR 2 E_WARNING
4 E_PARSE 8 E_NOTICE
16 E_CORE_ERROR 32 E_CORE_WARNING
64 E_COMPILE_ERROR 128 E_COMPILE_WARNING
256 E_USER_ERROR 512 E_USER_WARNING
1024 E_USER_NOTICE 2047 E_ALL
2048 E_STRICT 4096 E_RECOVERABLE_ERROR
例 5-2-2.php
5
Created by 刀客羽朋