16.3.3 获取异常信息的函数
通过前面的学习,读者已经了解到,当一个程序遇到一个错误时,可以建立Exception类的对象来处理,就像下面这段代码一样。
$e=new Exception("Could not open file");
此时,Excetpion类的构造函数将通过一个错误信息创建一个该类的对象$e。建立这个对象后,通常使用关键字throw将这个异常(或者说错误)抛出。throw将脚本的执行中止,并使相关的Exception对象对客户代码可用。
本小节介绍Exception类的成员函数getMessage(),该函数用来产生一个对错误信息的描述。代码16-3演示了该成员函数的用法。
代码16-3 Exception类的成员函数getMessage()的使用16-3.php
01 <?php
02 $file='./test/readme.txt';//指定文件地址
03
04 try
05 {
06 if(is_dir($file))//判断是不是目录
07 {
08 echo'检测到目录';
09 }
10 else
11 {
12 //创建异常对象,错误信息将有Exception类的成员函数getMessage()返回
13 throw new Exception('未找到该目录或文件');
14 }
15 }
16 catch(Exception$e)
17 {
18 echo'捕获异常:'.$e->getMessage();
19 echo'<br/>===============================';
20 echo'<br/>';
21 }
22
23 echo'程序执行完毕';
24 ?>
【代码解析】这段代码将判断文件是否为目录的代码放在try块中,并且当所判断的文件不是目录时,创建异常类Exception的对象,并使用“未找到该目录或文件”这段信息初始化该对象,如代码第13行所示。这段信息被赋值给Exception类的成员变量$message,这个成员变量可以由Exception类的成员函数getMessage()返回,如这段代码第18行,通过Exception类的对象$e调用函数getMessage()将这个异常信息输出。这段程序的执行结果如图16-2所示。
这里只是举一个简单例子说明如何使用Exception类,以及使用该类的成员函数getMessage()获取异常信息。一般是通过该类派生出处理某种操作的异常处理子类,来完成对异常的处理。在派生类中实现throw异常,然后在使用这个类的程序中try……catch。这样做的好处是:一是可以在子类中提供更多更完善有效的自定义功能;二是可以区分不同类型的异常。