php中try catch捕獲異常實(shí)例詳解
PHP 5 添加了類似于其它語言的異常處理模塊。在 PHP 代碼中所產(chǎn)生的異??杀?nbsp;throw語句拋出并被 catch 語句捕獲。(注:一定要先拋才能獲?。?br />
需要進(jìn)行異常處理的代碼都必須放入 try 代碼塊內(nèi),以便捕獲可能存在的異常。
每一個(gè) try 至少要有一個(gè)與之對(duì)應(yīng)的 catch。
使用多個(gè) catch可以捕獲不同的類所產(chǎn)生的異常。
當(dāng) try 代碼塊不再拋出異常或者找不到 catch 能匹配所拋出的異常時(shí),PHP 代碼就會(huì)在跳轉(zhuǎn)到最后一個(gè) catch 的后面繼續(xù)執(zhí)行。
當(dāng)然,PHP允許在 catch 代碼塊內(nèi)再次拋出(throw)異常。
當(dāng)一個(gè)異常被拋出時(shí),其后(譯者注:指拋出異常時(shí)所在的代碼塊)的代碼將不會(huì)繼續(xù)執(zhí)行,而 PHP 就會(huì)嘗試查找第一個(gè)能與之匹配的 catch。
如果一個(gè)異常沒有被捕獲,而且又沒用使用 set_exception_handler() 作相應(yīng)的處理的話,那么 PHP 將會(huì)產(chǎn)生一個(gè)嚴(yán)重的錯(cuò)誤,并且輸出 Uncaught Exception ... (未捕獲異常)的提示信息。
先來看一下PHP內(nèi)置異常類的基本屬性和方法。(不包括具體實(shí)現(xiàn))
<?php /** * Exception.php * * PHP5內(nèi)置的異常類的屬性與方法 * 以下這段代碼只為說明內(nèi)置異常處理類的結(jié)構(gòu),它并不是一段有實(shí)際意義的可用代碼。 */ class Exception{ protected $message = 'Unknown exception'; // 異常信息 protected $code = 0; // 用戶自定義異常代碼 protected $file; // 發(fā)生異常的文件名 protected $line; // 發(fā)生異常的代碼行號(hào) function __construct($message = null, $code = 0); final function getMessage(); // 返回異常信息 final function getCode(); // 返回異常代碼(代號(hào)) final function getFile(); // 返回發(fā)生異常的文件名 final function getLine(); // 返回發(fā)生異常的代碼行號(hào) final function getTrace(); // backtrace() 數(shù)組 final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息 //可重載的方法 function __toString(); // 可輸出的字符串 } ?>
例子如下:
包含文件錯(cuò)誤拋出異常
<?php // 錯(cuò)誤的演示 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 { throw new Exception('file is not exists'); } } catch (Exception $e) { echo $e->getMessage(); }
到此這篇關(guān)于php中try catch捕獲異常實(shí)例詳解的文章就介紹到這了,更多相關(guān)php中try catch捕獲異常內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PHP對(duì)象相互引用的內(nèi)存溢出實(shí)例分析
這篇文章主要介紹了PHP對(duì)象相互引用的內(nèi)存溢出實(shí)例分析,是PHP5.3以下版本中常見的一個(gè)bug,文中給出了解決方法,需要的朋友可以參考下2014-08-08javascript+php實(shí)現(xiàn)根據(jù)用戶時(shí)區(qū)顯示當(dāng)?shù)貢r(shí)間的方法
這篇文章主要介紹了javascript+php實(shí)現(xiàn)根據(jù)用戶時(shí)區(qū)顯示當(dāng)?shù)貢r(shí)間的方法,實(shí)例分析javascript獲取客戶端時(shí)區(qū)及與服務(wù)器端php交互的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03PHP模擬asp中response類實(shí)現(xiàn)方法
這篇文章主要介紹了PHP模擬asp中response類的方法,可實(shí)現(xiàn)模擬ASP中response類處理客戶端響應(yīng)的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08PHP偽靜態(tài)Rewrite設(shè)置之APACHE篇
Rewirte主要的功能就是實(shí)現(xiàn)URL的跳轉(zhuǎn)和隱藏真實(shí)地址,基于Perl語言的正則表達(dá)式規(guī)范。平時(shí)幫助我們實(shí)現(xiàn)擬靜態(tài),擬目錄,域名跳轉(zhuǎn),防止盜鏈等2014-07-07PHP多維數(shù)組遍歷方法(2種實(shí)現(xiàn)方法)
這篇文章主要介紹了PHP多維數(shù)組遍歷方法,實(shí)例分析了2種多維數(shù)組的遍歷技巧,包括簡(jiǎn)單的foreach遍歷與遞歸操作遍歷實(shí)現(xiàn)方法,需要的朋友可以參考下2015-12-12PHP通過調(diào)用新浪API生成t.cn格式短網(wǎng)址鏈接的方法詳解
這篇文章主要介紹了PHP通過調(diào)用新浪API生成t.cn格式短網(wǎng)址鏈接的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了php調(diào)用新浪API生成t.cn格式短網(wǎng)址鏈接的具體操作步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-02-02