上篇文章給大家介紹了《PHP中什么是異常處理?如何使用異常處理中的try—catch?》,本文繼續給大家介紹PHP中什么是自定義異常處理類?我們如何解決自定義異常處理類?有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。
自定義異常處理類:
final:如果用來修飾類,那么代表這個類不能被繼承,如果用來修飾方法,代表這個方法不能被重寫
要繼承自官方的異常處理類,方法自已隨便添加,父類方法注意能不能重寫。
[注]如果多個catch,要將自定義的異常類寫到上面,將官方異常類寫到下面
嵌套:在try里面可以在建立try
自定義異常處理函數(了解)
set_exception_ handler('test') ;
注冊一個函數,當拋出異常的時候,就會被這個函數自動捕獲到,=該函數有一個參數,參數就是異常對象
我們以代碼為例:
<?php function test($e) { echo $e->getMessage(); } set_exception_handler('test'); throw new Exception( '現在有異常了');
關于異常處理類,我們還是以代碼的形式給大家解釋,首先我們還是要新建一個文件,我們定義一個class類,我們需要繼承官方的異常處理類,緊接著我們在類里面定義一個(function)方法,假如說我們通過try嘗試執行代碼的時候,我們就可以通過catch,通過自己的異常處理類來捕獲即可,我們通過代碼演示如下:
<?php class MyException extends Exception { function demo( ) { echo '執行第二套方案<br />' ; } } try { echo '我將于茫茫人海中訪我唯一靈魂之伴侶<br />'; throw new MyException( '主人出錯啦'); echo '得之,我幸;不得,我命<br />'; } catch (MyException $e) { echo $e->getMessage(); } ?>
代碼演示結果如下:
下面是我們自己定義的異常處理類,如果執行有錯誤了,我們可以執行,第二套方法,
catch (MyException $e) { echo $e->getMessage(); echo '<hr>'; $e->demo(); }
代碼演示結果如下:
這是我們自己定義的有關異常處理類的;
我們復制一下剛剛的代碼,我們去找一下到底哪個catch能夠捕捉到異常,代碼如下:
try { echo '我將于茫茫人海中訪我唯一靈魂之伴侶<br />'; throw new MyException( '主人出錯啦'); echo '得之,我幸;不得,我命<br />'; } catch (MyException $e) { echo '因為愛過,所以慈悲'; }catch (Exception $e){ echo '因為懂得,所以寬容'; }
代碼演示結果如下:
由代碼可知,說明捕捉到的異常是我們自定義的異常處理類來捕捉這個對象的,如果我們把MyException和Exception調換一下順序會怎么?我們運行會發現還是第一個,
注意:Exception 是官方的一個類,他是一個父類,他是MyException的一個父類,如果他們兩個在同時捕獲異常的時候,我們需要先先將子類的東西放在前面,再寫官方的類,
推薦學習:php視頻教程