PHP中什麼是自訂異常處理類別?如何解決自訂異常處理類別?

慕斯
發布: 2023-03-10 19:30:01
原創
1739 人瀏覽過

上篇文章為大家介紹了《PHP中什麼是異常處理?如何使用異常處理中的try—catch? 》,本文繼續介紹PHP中什麼是自訂異常處理類別?我們如何解決自訂異常處理類別?有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

PHP中什麼是自訂異常處理類別?如何解決自訂異常處理類別?

自訂例外處理類別:

#final:如果用來修飾類別,那麼就代表這個類別不能被繼承,如果用來修飾方法,代表這個方法不能被重寫

要繼承自官方的異常處理類,方法自已隨便添加,父類方法注意能不能重寫。

[註]如果多個catch,要將自訂的異常類別寫到上面,將官方異常類別寫到下面

##巢狀: 在try裡面可以在建立try

自訂例外處理函數(了解)

set_exception_ handler('test') ;
登入後複製

註冊一個函數,當拋出例外的時候,就會被這個函數自動捕捉到,=函數有一個參數,參數就是異常物件

我們以程式碼為例:

<?php
function test($e)
{
echo $e->getMessage();
}
set_exception_handler(&#39;test&#39;);
throw new Exception( &#39;现在有异常了&#39;);
登入後複製

PHP中什麼是自訂異常處理類別?如何解決自訂異常處理類別?

關於異常處理類,我們還是以程式碼的形式跟大家解釋,首先我們還是要新建一個文件,我們定義一個class類,我們需要繼承官方的異常處理類,緊接著我們在類裡面定義一個(function)方法,假如說我們透過try嘗試執行程式碼的時候,我們就可以透過catch,透過自己的異常處理類別來捕獲即可,我們透過程式碼示範如下:

<?php
class MyException extends Exception
{
function demo( )
{
  echo &#39;执行第二套方案<br />&#39; ;
}
}
try {
  echo &#39;我将于茫茫人海中访我唯一灵魂之伴侣<br />&#39;;
  throw new MyException( &#39;主人出错啦&#39;);
  echo &#39;得之,我幸;不得,我命<br />&#39;;
} catch (MyException $e) {
  echo $e->getMessage();
}
?>
登入後複製

程式碼示範結果如下:

PHP中什麼是自訂異常處理類別?如何解決自訂異常處理類別?

下面是我們自己定義的異常處理類,如果執行有錯誤了,我們可以執行,第二套方法,

catch (MyException $e) {
  echo $e->getMessage();
  echo &#39;<hr>&#39;;
  $e->demo();
}
登入後複製

程式碼演示結果如下:

PHP中什麼是自訂異常處理類別?如何解決自訂異常處理類別?

這是我們自己定義的有關異常處理類別的;

我們複製一下剛剛的程式碼,我們去找一下到底哪個catch能夠捕捉到異常,程式碼如下:

try {
  echo &#39;我将于茫茫人海中访我唯一灵魂之伴侣<br />&#39;;
  throw new MyException( &#39;主人出错啦&#39;);
  echo &#39;得之,我幸;不得,我命<br />&#39;;
} catch (MyException $e) {
  echo &#39;因为爱过,所以慈悲&#39;;
}catch (Exception $e){
  echo &#39;因为懂得,所以宽容&#39;;
}
登入後複製

程式碼示範結果如下:

PHP中什麼是自訂異常處理類別?如何解決自訂異常處理類別?

由程式碼可知,說明捕捉到的例外是我們自訂的例外處理類別來捕捉這個物件的,如果我們把MyException和Exception調換一下順序會怎麼辦?我們運行會發現還是第一個,

注意:Exception 是官方的一個類,他是一個父類,他是MyException的一個父類,如果他們兩個在同時捕獲異常的時候,我們需要先將子類的東西放在前面,再寫官方的類,

推薦學習:

php視頻教程

以上是PHP中什麼是自訂異常處理類別?如何解決自訂異常處理類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板