新聞中心

創(chuàng)新互聯(lián)建站專注于網(wǎng)站建設(shè)|成都網(wǎng)站維護|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計與制作經(jīng)驗,為許多企業(yè)提供了網(wǎng)站定制設(shè)計服務(wù),案例作品覆蓋成都食品包裝袋等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身定制品質(zhì)網(wǎng)站。
這種 Error 異??梢韵?Exception 異常一樣被第一個匹配的 try catch 語句塊所捕獲。如果沒有匹配的 catch 語句塊,則調(diào)用異常處理函數(shù)(事先通過 set_exception_handler() 注冊)進行處理。如果尚未注冊異常處理函數(shù),則報告為一個致命錯誤(Fatal Error)。
注意:Error 類并非繼承自 Exception 類,所以不能用 catch (Exception $e) { ... } 來捕獲 Error??梢杂?code> catch (Error $e) {...},或者通過注冊異常處理函數(shù) set_exception_handler() 來捕獲 Error。
【示例】如下代碼自動捕獲一個致命錯誤。
getMessage().'
Error 發(fā)生的行號:'.$e->getLine(); } ?>
運行結(jié)果如下:
Error 的信息:Class 'cat' not found
Error 發(fā)生的行號:3
在 PHP7 中實現(xiàn)了一個全局的所有可以通過 throw 語句拋出的異常的 throwable 基礎(chǔ)接口,原有的 Exception 和新增的部分 Error 都實現(xiàn)了這個接口,以接口的方式定義了異常的繼承結(jié)構(gòu),也明確了Exception 和各種 Error 都可以被當(dāng)做一種可拋出的異常來處理。
要知道的是目前 PHP7 中并不是所有的錯誤均實現(xiàn)了 throwable 接口或繼承至 PHP7 新增的 Error 類,原先 PHP5 中的一些錯誤特別是一些 E_PARSE、E_ERROR 級別的致命錯誤在 PHP7 中變?yōu)榱丝刹东@的 throwable(Exception 對象或子對象和 Error 對象或子對象),如果不進行捕獲則為一個錯誤,如果捕獲就變?yōu)橐粋€可在程序內(nèi)處理的異常(throwable)。
基于上述分析可以這樣理解:PHP7 中的異常所表示的范圍相對于 PHP5 更為寬泛了,既包含了 PHP5 中的 Exception,又新增了 PHP7 才加入的 Error,而 Exception 和 Error 又都是實現(xiàn)了 throwable 接口,所以 PHP7 之后談到異常首先應(yīng)該想到的是 throwable 而不是 Exception。
throwable 接口的層次結(jié)構(gòu)如下所示:
Throwable
├─ Error
│ ├─ ArithmeticError
│ │ └─ DivisionByZeroError
│ ├─ AssertionError
│ ├─ CompileError
│ │ └─ ParseError
│ └─ TypeError
│ └─ ArgumentCountError
└─ Exception
└─ ...(各種 Exception 的子類)
網(wǎng)頁題目:PHP7中的錯誤處理
路徑分享:http://fisionsoft.com.cn/article/dpgpood.html


咨詢
建站咨詢
