PHP的异常处理

1 基本异常类
扩展基本异常类提供了一个不带参数的构造函数和一个带有两个可选参数的重构构造函数和6个方法。
-默认构造函数
如 throw new Exception(); 异常实例化后就可以使用它的6个方法,但是只有4个可以任意使用,另外两个只在使用重载构造函数实例化异常类时才能使用
-重载构造函数
接受三个可选参数,由此能提供默认构造函数所没有的其它功能。

message 可通过getMessage()方法传递给用户
error code 错误标识符,可以映射到某个标示符消息表,可以使用getCode()方法得到。
previous PHP5.3.0新增加,这个可选参数可以用来传入导致抛出当前异常的异常
如下例子:

throw new Exception(“Message”) 使用第一个参数
throw new Exception(“Message”, 4) 使用第一和第二个参数
throw new Exception(“Message”, 4, $e) 使用三个参数,$e是导致当前异常的异常对象
-方法

getCode() 返回传递给构造函数的错误代码
getFile() 返回抛出异常的文件名
getLine() 返回抛出异常的行号
getMessage() 返回传递给构造函数的消息
getPrevious() PHP5.3新增,返回前一个异常(必须通过构造函数传入)
getTrace() 返回一个数组,包含文件名、行号、函数名和函数参数
getTraceAsString() 返回字符串
注:异常基类的任何方法都声明为final,所有都无法覆盖。

例子:

try{
if( !fopen(“vfeelit.com.txt”, “r”) ){
throw new Exception(“Could not open the file!”);
}
}catch(Exception $e){
echo “Error (File: ”.$e->getFile().”, line ”.$e.->getLine().”): ”.$e->getMessage();
}
2 扩展异常类
一般是extends基本异常类,定制一个自己的异常类。

3 捕获多个异常

try{

}catch(Exception $e){
}catch(MyException $e){
}
4 SPL异常
SPL(Standard PHP Library,标准PHP库)扩展了PHP,为一些常见任务提供了现成的解决方案,如文件访问、各种排序已经PHP未内置的一些数据结构。

SPL提供了13个预定义的异常,分为逻辑相关于运行相关两大类:
BadFunctionCallException
BadMethodCallException
DomainException
InvalidArgumentException
LengthException
LogicException
OutOfBoundsException
….
注:这些异常类目前没有提供与其处理的情况相关的特殊特性。(意思就是跟直接使用Exception没有啥不同,唯一不一样的地方就是名字不一样)

坚持原创技术分享,您的支持将鼓励我继续创作!