91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php拋出異常與捕捉特定類型的異常分別是什么意思

發布時間:2021-07-02 15:51:17 來源:億速云 閱讀:143 作者:chen 欄目:開發技術

這篇文章主要介紹“php拋出異常與捕捉特定類型的異常分別是什么意思”,在日常操作中,相信很多人在php拋出異常與捕捉特定類型的異常分別是什么意思問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”php拋出異常與捕捉特定類型的異常分別是什么意思”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

什么是異常?

PHP 5 提供了一種新的面向對象的錯誤處理方法。

異常處理用于在指定的錯誤(異常)情況發生時改變腳本的正常流程。這種情況稱為異常。

當異常被觸發時,通常會發生:

      當前代碼狀態被保存

      代碼執行被切換到預定義的異常處理器函數

      根據情況,處理器也許會從保存的代碼狀態重新開始執行代碼,終止腳本執行,或從代碼中另外的位置繼續執行腳本

我們將展示不同的錯誤處理方法:

      異常的基本使用

      創建自定義的異常處理器

      多個異常

      重新拋出異常

      設置頂層異常處理器

php拋出異常與捕捉特定類型的異常最終的目的還是要給出對應的解決辦法,讓代碼可以繼續運行。

本文的測試環境:PHP5.5.36  Safari 9.1.2

 1 <?php
 2 header("content-type:text/html; charset=utf-8");
 3 /**
 4 * 包裹重量異常
 5 */
 6 class HeavyParcelException extends Exception {}
 7 
 8 /**
 9 * 包裹類
10 */
11 class Parcel {
12 
13   /**
14   * 包裹寄送目的地地址
15   */
16   public $address;
17 
18   /**
19   * 包裹重量
20   */
21   public $weight;
22 }
23 
24 /**
25 * 派送員
26 */
27 class Courier {
28  
29   /** 
30   * 運送
31   */
32   public function ship(Parcel $parcel) {
33     //check we have an address
34     //如果包裹的目的地為空
35     if(empty($parcel->address)) {
36       throw new Exception('address not Specified(未填寫地址)!');
37     } 
38 
39     //check the weight
40     //如果重量超過5
41     if($parcel->weight > 5) {
42       throw new HeavyParcelException('Parcel exceeds courier limit(包裹超過運送上限)!');
43     } 
44 
45     //otherwise we're coll
46     return true;
47   }
48 }
49 
50 $myCourier = new Courier();
51 $parcel = new Parcel();
52 //add the address if we have it 為了測試這里不填寫地址
53 $parcel->weight = 7;
54 try {
55   $myCourier->ship($parcel);
56   echo "parcel shipped";
57 } catch (HeavyParcelException $e) {//捕獲HeavyParcelException 不寫這個異常的類型名字,就跑到普通Exception拋出去了
58   echo "Parcel weight error(重量錯誤): " . $e->getMessage();
59   //redirect them to choose another courier
60 } catch (Exception $e) {
61   echo "Someting went wrong(地址錯誤): " . $e->getMessage();
62   //exit so we don't try to proceed any further
63   exit;
64 }
65 echo '<br/>';
66 $a = 123;
67 echo $a;

從54行開始的代碼執行順序:

55 >

32 >

35(ship方法中先檢查的是地址為空,這里會拋出Exception,而非57行的HeavyParcelException) >

60(捕獲到Exception) >

616263 輸出地址錯誤 exit;不會輸出65到67行了

 Tips:

 我感覺這一塊最重要的就是搞清楚代碼執行的順序。寫幾段,然后改一改跑一跑。

 1.捕獲的順序,要看try中的代碼中throw的是哪個類型的Exception,然后才看 catch里的順序。

 2.57行的捕獲的是特定的類型HeavyParcelException不能寫錯,或寫Exception都會有問題。可以自己試試。

  1)例如地址不為空,57行寫成了HeavyParcelException111,就會,在60行它的父類對象中捕獲到,重量錯誤。這不是我們想要的。

      2)例如地址為空,57行寫成了Exception,會拋出地址錯誤,但捕獲的卻是本來負責重量的catch。這也不是我們想要的。

到此,關于“php拋出異常與捕捉特定類型的異常分別是什么意思”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

龙游县| 临邑县| 稷山县| 菏泽市| 临沭县| 黑龙江省| 邢台市| 聂拉木县| 宜州市| 新河县| 会理县| 涟水县| 银川市| 景德镇市| 喀什市| 台东县| 祁门县| 青岛市| 宁明县| 永福县| 剑川县| 大竹县| 耒阳市| 昌都县| 临湘市| 潜江市| 兖州市| 治县。| 五大连池市| 察隅县| 龙陵县| 安福县| 巴林右旗| 阿克| 武隆县| 孙吴县| 墨脱县| 双鸭山市| 财经| 潜江市| 洛川县|