9.7 错误处理
错误处理也叫异常处理。通过使用try…throw…catch结构和一个内置函数Exception()来抛出和处理错误或异常。
下面通过打开文件的实例介绍异常的处理方法和技巧。
【例9.5】(实例文件:ch10\9.5.php)
<html> <head> <title> 类的继承与接口</title> </head> <body> <?php $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; @$fp = fopen("$DOCUMENT_ROOT/book.txt",'rb'); try{ if (!$fp){ throw new Exception("文件路径有误或找不到文件。"); } }catch(Exception $exception){ echo $exception->getMessage(); echo "在文件". $exception->getFile()."的".$exception->getLine()."行。<br />"; } @fclose($fp); ?> </body> </html>
运行结果如图9-5所示。
【案例分析】
(1)fopen()函数打开“$DOCUMENT_ROOT/book.txt”文件进行读取,但是由于“book.txt”文件不存在,则$fp为false。
(2)try区块判断$fp为false时,抛出一个意外。此意外直接通过new关键字生成Exception()类的实例。异常信息是传入参数定义的“文件路径有误或找不到文件。”。
(3)catch区块通过处理传入的Exception()类实例,显示出错误信息、错误文件、错误发生行。这些是通过直接调用Exception()类实例$exception的内置类方法获得。错误信息由getMessage()生成,错误文件由getFile()生成,错误发生行由getLine()生成。
(4)@fclose()和@$fp= fopen()中的“@”表示,屏蔽此命令的执行中产生的错误信息。