php中try catch捕获异常实例详解
本文实例讲述了php中trycatch捕获异常。分享给大家供大家参考。具体方法分析如下:
php中trycatch可以帮助我们捕获程序代码的异常了,这样我们可以很好的处理一些不必要的错误了,感兴趣的朋友可以一起来看看。
PHP中try{}catch{}语句概述
PHP5添加了类似于其它语言的异常处理模块。在PHP代码中所产生的异常可被throw语句抛出并被catch语句捕获。(注:一定要先抛才能获取)
需要进行异常处理的代码都必须放入try代码块内,以便捕获可能存在的异常。
每一个try至少要有一个与之对应的catch。
使用多个catch可以捕获不同的类所产生的异常。
当try代码块不再抛出异常或者找不到catch能匹配所抛出的异常时,PHP代码就会在跳转到最后一个catch的后面继续执行。
当然,PHP允许在catch代码块内再次抛出(throw)异常。
当一个异常被抛出时,其后(译者注:指抛出异常时所在的代码块)的代码将不会继续执行,而PHP就会尝试查找第一个能与之匹配的catch。
如果一个异常没有被捕获,而且又没用使用set_exception_handler()作相应的处理的话,那么PHP将会产生一个严重的错误,并且输出UncaughtException...(未捕获异常)的提示信息。
先来看一下PHP内置异常类的基本属性和方法。(不包括具体实现)
try{ } catch(){ thrownewException(); } catch(){ //这里可以捕获到前面一个块抛出的Exception }
为了进一步处理异常,我们需要使用PHP中try{}catch{}----包括Try语句和至少一个的catch语句。任何调用可能抛出异常的方法的代码都应该使用try语句。Catch语句用来处理可能抛出的异常。以下显示了我们处理getCommandObject()抛出的异常的方法:
<?php try{ $mgr=newCommandManager(); $cmd=$mgr->getCommandObject("realcommand"); $cmd->execute(); }catch(Exception$e){ print$e->getMessage(); exit(); } ?>
可以看到,通过结合使用throw关键字和PHP中try{}catch{},我们可以避免错误标记“污染”类方法返回的值。因为“异常”本身就是一种与其它任何对象不同的PHP内建的类型,不会产生混淆。
如果抛出了一个异常,try语句中的脚本将会停止执行,然后马上转向执行catch语句中的脚本。
例子如下:
包含文件错误抛出异常
<?php //错误的演示 try{ require('test_try_catch.php'); }catch(Exception$e){ echo$e->getMessage(); }
//正确的抛出异常 try{ if(file_exists('test_try_catch.php')){ require('test_try_catch.php'); }else{ thrownewException('fileisnotexists'); } }catch(Exception$e){ echo$e->getMessage(); }