<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 9.8 異常匹配 “拋”出一個異常后,異常控制系統會按當初編寫的順序搜索“最接近”的控制器。一旦找到相符的控制器,就認為異常已得到控制,不再進行更多的搜索工作。 在異常和它的控制器之間,并不需要非常精確的匹配。一個派生類對象可與基類的一個控制器相配,如下例所示: ``` //: Human.java // Catching Exception Hierarchies class Annoyance extends Exception {} class Sneeze extends Annoyance {} public class Human { public static void main(String[] args) { try { throw new Sneeze(); } catch(Sneeze s) { System.out.println("Caught Sneeze"); } catch(Annoyance a) { System.out.println("Caught Annoyance"); } } } ///:~ ``` `Sneeze`異常會被相符的第一個`catch`從句捕獲。當然,這只是第一個。然而,假如我們刪除第一個`catch`從句: ``` try { throw new Sneeze(); } catch(Annoyance a) { System.out.println("Caught Annoyance"); } ``` 那么剩下的`catch`從句依然能夠工作,因為它捕獲的是`Sneeze`的基類。換言之,`catch(Annoyance e)`能捕獲一個`Annoyance`以及從它派生的任何類。這一點非常重要,因為一旦我們決定為一個方法添加更多的異常,而且它們都是從相同的基類繼承的,那么客戶程序員的代碼就不需要更改。至少能夠假定它們捕獲的是基類。 若將基類捕獲從句置于第一位,試圖“屏蔽”派生類異常,就象下面這樣: ``` try { throw new Sneeze(); } catch(Annoyance a) { System.out.println("Caught Annoyance"); } catch(Sneeze s) { System.out.println("Caught Sneeze"); } ``` 則編譯器會產生一條出錯消息,因為它發現永遠不可能抵達`Sneeze`捕獲從句。 ## 9.8.1 異常準則 用異常做下面這些事情: (1) 解決問題并再次調用造成異常的方法。 (2) 平息事態的發展,并在不重新嘗試方法的前提下繼續。 (3) 計算另一些結果,而不是希望方法產生的結果。 (4) 在當前環境中盡可能解決問題,以及將相同的異常重新“拋”出一個更高級的環境。 (5) 在當前環境中盡可能解決問題,以及將不同的異常重新“拋”出一個更高級的環境。 (6) 中止程序執行。 (7) 簡化編碼。若異常方案使事情變得更加復雜,那就會令人非常煩惱,不如不用。 (8) 使自己的庫和程序變得更加安全。這既是一種“短期投資”(便于調試),也是一種“長期投資”(改善應用程序的健壯性)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看