在PHP环境中,Exception类主要有两个作用:
- 作为其它异常类的父类。
- 作为错误处理的通用类。
下面,我们就首先了解一下Exception类的基本使用方法。
Exception成员
Exception类的构造函数定义如下:
__construct(<异常信息>, <异常代码>, <前一错误>)
这三个参数都是可选的,作为自己创建的异常对象,我们一般不需要指定后两个参数,但是,如果一个异常一点信息都没有,那怎么知道是出现什么问题了呢?所以,一般我们会指定第一个参数。
在try-catch语句结构和throw语句的相关讨论中,我们会看到Exception类的具体应用。
再看Exception类的公共成员,主要有以下一些方法:
- getMessage()方法,获取异常的消息。
- getPrevious()方法,获取异常链中的前一个异常,如果不存在则返回null值。
- getCode()方法,获取异常的代码。
- getFile()方法,获取异常发生的文件名。
- getLine()方法,获取异常发生的代码行号。
- getTrace()方法,获取异常追踪信息,其返回值是一个数组。
- getTraceAsString()方法, 获取异常追踪信息的字符串形式。
Exception对象还定义了__toString()方法,我们可以直接使用print或echo显示异常对象信息。
创建自定义异常类
创建自定义的异常类时,我们可以将它们定义为Exception类的子类,但对于前面介绍的公共方法,我们不能重写它们,因为它们都定义为final的,不过,还是有一些成员可以供我们在子类使用的,如:
- $message属性,异常的描述信息,定义为string类型。
- $code属性,int类型,异常代码。
- $file属性,string类型,表示出现异常的文件名,可以使用FILE常量获取。
- $line属性,int类型,表示出现异常的行号,可以使用LINE常量获取。
- __toString()方法,我们可以重定此方法,以便将异常对象转换为自己需要的字符串形式。
- __clone()方法,我们可以添加异常对象克隆时的附加操作。
下面,我们就定义一简单的异常类。
class CUnknowException extends Exception
{
function __construct()
{
this->message = '未知的错误';this->code = -1;
this->file = __FILE__;this->line = __LINE__;
}
function __toString()
{
return __CLASS__.': 未知的错误';
}
}
ex = new CUnknowException();
echoex->getMessage();
echo '<br>';
echo $ex;
代码执行结果如下图。