上篇文章給大家介紹了《PHP中什么是異常處理?如何使用異常處理中的try—catch?》,本文繼續(xù)給大家介紹PHP中什么是自定義異常處理類?我們?nèi)绾谓鉀Q自定義異常處理類?有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)大家有所幫助。
自定義異常處理類:
final:如果用來(lái)修飾類,那么代表這個(gè)類不能被繼承,如果用來(lái)修飾方法,代表這個(gè)方法不能被重寫
要繼承自官方的異常處理類,方法自已隨便添加,父類方法注意能不能重寫。
[注]如果多個(gè)catch,要將自定義的異常類寫到上面,將官方異常類寫到下面
嵌套:在try里面可以在建立try
自定義異常處理函數(shù)(了解)
set_exception_ handler('test') ;
注冊(cè)一個(gè)函數(shù),當(dāng)拋出異常的時(shí)候,就會(huì)被這個(gè)函數(shù)自動(dòng)捕獲到,=該函數(shù)有一個(gè)參數(shù),參數(shù)就是異常對(duì)象
我們以代碼為例:
<?php function test($e) { echo $e->getMessage(); } set_exception_handler('test'); throw new Exception( '現(xiàn)在有異常了');
關(guān)于異常處理類,我們還是以代碼的形式給大家解釋,首先我們還是要新建一個(gè)文件,我們定義一個(gè)class類,我們需要繼承官方的異常處理類,緊接著我們?cè)陬惱锩娑x一個(gè)(function)方法,假如說(shuō)我們通過(guò)try嘗試執(zhí)行代碼的時(shí)候,我們就可以通過(guò)catch,通過(guò)自己的異常處理類來(lái)捕獲即可,我們通過(guò)代碼演示如下:
<?php class MyException extends Exception { function demo( ) { echo '執(zhí)行第二套方案<br />' ; } } try { echo '我將于茫茫人海中訪我唯一靈魂之伴侶<br />'; throw new MyException( '主人出錯(cuò)啦'); echo '得之,我幸;不得,我命<br />'; } catch (MyException $e) { echo $e->getMessage(); } ?>
代碼演示結(jié)果如下:
下面是我們自己定義的異常處理類,如果執(zhí)行有錯(cuò)誤了,我們可以執(zhí)行,第二套方法,
catch (MyException $e) { echo $e->getMessage(); echo '<hr>'; $e->demo(); }
代碼演示結(jié)果如下:
這是我們自己定義的有關(guān)異常處理類的;
我們復(fù)制一下剛剛的代碼,我們?nèi)フ乙幌碌降啄膫€(gè)catch能夠捕捉到異常,代碼如下:
try { echo '我將于茫茫人海中訪我唯一靈魂之伴侶<br />'; throw new MyException( '主人出錯(cuò)啦'); echo '得之,我幸;不得,我命<br />'; } catch (MyException $e) { echo '因?yàn)閻?ài)過(guò),所以慈悲'; }catch (Exception $e){ echo '因?yàn)槎?,所以寬?#39;; }
代碼演示結(jié)果如下:
由代碼可知,說(shuō)明捕捉到的異常是我們自定義的異常處理類來(lái)捕捉這個(gè)對(duì)象的,如果我們把MyException和Exception調(diào)換一下順序會(huì)怎么?我們運(yùn)行會(huì)發(fā)現(xiàn)還是第一個(gè),
注意:Exception 是官方的一個(gè)類,他是一個(gè)父類,他是MyException的一個(gè)父類,如果他們兩個(gè)在同時(shí)捕獲異常的時(shí)候,我們需要先先將子類的東西放在前面,再寫官方的類,
推薦學(xué)習(xí):php視頻教程