在php语言中,try catch finally语句是非常常见的一种处理机制,主要用来捕捉和处理异常。这个语句可以用于任何你认为可能会发生异常的代码块,可以帮助你避免程序出现不可预知的错误,保证程序的健壮性和稳定性。try catch finally语句的核心思想就是:在try块中申明有可能会引起异常的代码,然后通过catch块捕获异常并对其进行处理,最后在finally块中执行一些必须要执行的代码,比如一些资源的释放操作。下面我们通过几个例子来详细了解这一语句的使用。例1:除数为0异常下面的代码演示了一个简单的除数为0异常,通过try catch finally的语句,可以有效的处理这个异常。
$pizza = 0;try{$rating = 48 / $pizza;}catch(Exception $e){echo "Caught exception: ". $e ->getMessage();}finally{echo "Finally block";}
通过上面的代码,我们可以看到在try块中定义了一个被零除的操作,这个操作显然会引起一个除数为0的异常。但是我们通过catch块来捕获这个异常,并且在finally块中输出一段必须要输出的代码。运行上面的代码,我们可以看到输出了如下结果:Caught exception: Division by zeroFinally block例2:自定义异常在php中,我们也可以自定义异常。下面的代码演示了如何定义和抛出一个自己的异常:
class CustomException extends Exception{public function errorMessage(){// 错误信息$errorMsg = "Error on line ".$this ->getLine()." in ".$this ->getFile().": ".$this ->getMessage();return $errorMsg;}}$score = 301;try{if ($score >300){// 抛出自定义异常throw new CustomException("Score is invalid");}}catch(CustomException $e){echo $e ->errorMessage();}finally{echo "Finally block";}
通过上面的代码,我们定义了一个CustomException类,通过继承Exception类来扩展了异常类的功能。在try块中,我们判断分数是否大于300,如果大于的话就抛出一个自定义的异常。在catch块中,我们捕获这个异常并输出了错误信息,在finally块中输出必须要输出的代码。运行上面的代码,我们可以看到输出了如下结果:Error on line 13 in /tmp/t.php: Score is invalidFinally block总结:通过上述的例子,我们可以看到在try catch finally语句的机制下,我们可以完美的处理各种异常情况,从而提高我们程序的健壮性和可靠性。在实际开发中,我们可以根据自己的需要来申明和定义各种自己的异常,进一步提高程序的可读性和可维护性。