php异常处理
所谓的异常是指在程序运行过程中所发生的不可预知的错误,比如程序在读取文件的内容时,文件不存在,这就是一种异常。php的异常机制和其他的语言的大同小异,都是通过捕捉获取异常,然后处理之。
大概结构如下:
try {
//可能会发生异常的代码块
}catch (Exception $e){
//处理异常
}
其中try后面可以写多个catch语句,但是每个catch所接受的异常对象必须是不同的,Exception是php的内置异常类,与java不同的是,php不会自动抛出异常,而是需要使用throw关键字手动抛出异常,例如:throw new Exception($msg);
下面通过一个简单的示例来说说他的用法:
假设我们要计算两个数相除的结果,那被除数一定不能为零,如果被除数为零,则抛出异常。
try {
$a=10;
$b=0;
if($b==0)
throw new Exception('被除数不能为零');
else
echo "$a/$b=".($a/$b);
}catch (Exception $e){
echo 'Exception:'.$e->getMessage().'<br>';
echo 'file:'.$e->getFile().'<br>';
echo 'line:'.$e->getLine().'<br>';
}
执行结果:
在上面的代码中,当被除数为零时,我们抛出了一个异常,并传入一个异常信息,此时程序跳入相应的catch块中,在catch异常后输出异常信息,发生异常的文件以及抛出异常的行数。
在执行了catch里面的代码后,程序会继续向后执行,如果抛出异常后没有与之匹配的catch块,那程序将会终止执行。
我们也可以通过继承Exception类来定义自己的异常类。
例如:
class MyException extends Exception{
//添加你自己的成员变量和方法
}
与java相比,php的异常处理机制还是略逊一筹,有没有觉得呢?