错误和异常处理
异常为以一种可扩展、可维护和面向对象的方式处理错误提供了统一机制。
异常处理的概念
1.异常处理的基本思想是代码在try代码块被调用执行。如果try代码块出现某些错误,我们可以执行一个抛出异常的操作。
try
{
//...
}
2.在PHP中,异常必须手动抛出。
throw new Exception($message,$code);
throw关键字将触发异常处理机制。它是一个语言结构,而不是一个函数,但是必须给他传递一个值。它要求接受一个对象。在最简单的情况下,可以实例化一个内置的Exception类,这个类的构造函数需要三个参数:消息、代码以及前序异常。前两个参数分别表示错误消息和错误代码号。当处理一系列的异常时,第三个参数可以用来传递前面抛出的异常。这三个参数都是可选的。
3.在try代码块之后,必须至少给出一个catch代码块。一个代码块可以有多个catch代码块。
catch (typehint exception)
{
//handle exception
}
传递给catch代码块的对象(也是被catch代码块捕获的)就是导致异常并传递给throw语句的对象。该异常可以是任何类型的。
当产生一个异常时,PHP将查询一个匹配的catch代码块。如果有多个catch代码块,传递给每一个catch代码块的对象必须具有不同的类型。
4.在catch代码块后可以添加finally代码块(可选)。在执行完try和catch代码块后,无论是否抛出异常,finally代码块都会被执行。
try{
//do something maybe throw some exceptions
}catch(Exception $e){
//handle exception
}finally{
echo 'Always runs!';
}
5.还可以在catch代码块产生新的异常。
#basic_exception.php
<?php
try{
throw new Exception("A terrible error has occured", 42);
}catch(Exception $e){
echo "Exception".$e -> getCode().": ".$e -> getMessage()."<br />".
"in ".$e -> getFile()."on line ".$e -> getLine(). "<br />";
}
?>