<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國際加速解決方案。 廣告
                # 構造器可以聲明初始化器塊中引發的受檢異常 > 原文: [https://howtodoinjava.com/java/exception-handling/checked-exceptions-thrown-in-initializer-blocks-can-be-declared-by-the-constructors/](https://howtodoinjava.com/java/exception-handling/checked-exceptions-thrown-in-initializer-blocks-can-be-declared-by-the-constructors/) 這篇文章是對 [**Java**](//howtodoinjava.com/tag/java-hidden-features/ "java hidden features") 鮮為人知的特性的繼續。 在上一篇文章中,我介紹了“[**相同類的實例可以訪問彼此的私有成員**](//howtodoinjava.com/object-oriented/instances-of-same-class-can-access-private-members-of-each-other/ "Instances of same class can access private members of each other")”,以及一些非常令人驚訝的[**`sun.misc.Unsafe`類的用法**](//howtodoinjava.com/java/related-concepts/usage-of-class-sun-misc-unsafe/ "Usage of class sun.misc.Unsafe")。 在本文中,我將討論一個關于初始化塊的鮮為人知的特性。 初始化塊是括號之間的代碼塊,該代碼塊在創建類實例之前甚至在調用構造器之前執行。 完全沒有必要將它們包括在您的類中。 初始化器可以通過兩種方式使用: **1)非靜態初始化器塊** 它取決于對象,并且為創建的類的每個對象執行初始化塊。 它可以初始化類的實例成員變量。 **2)靜態初始化器塊** 它使用關鍵字`static`定義,并且在加載類時執行一次,并且有限制,它只能初始化類的靜態數據成員。 這就是我們所知道的。 現在進入我們很多人以前都不知道的部分。 有時,在初始化器塊中,您可能需要編寫一些代碼,這些代碼可能引發受檢異常。 受檢異常是那些在編譯時受檢異常,編譯器會強制您在代碼中處理它們。 讓我們舉個例子: ```java public class CheckedExceptionsFromConstrctor { Document doc = null; { doc = new SAXBuilder(false).build(new StringReader(new String("<users/>"))); } } ``` **上面的代碼引發了兩個受檢的異常**`IOException`和`JDOMException`。您可以使用`try-catch`處理它們。 例如: ```java { try { doc = new SAXBuilder(false).build(new StringReader(new String("<users/>"))); } catch (JDOMException | IOException e) { e.printStackTrace(); } } ``` 如果您不希望在初始化器中處理異常并嘗試拋出該異常,則編譯器將不允許您這樣做。 ```java { try { doc = new SAXBuilder(false).build(new StringReader(new String("<users/>"))); } catch (JDOMException | IOException e) { throw e; //Not allowed } } ``` **解決方案:在所有構造器中為所有受檢異常添加`throws`子句** 在構造器中添加`throws`子句,您將可以從初始化器中拋出受檢異常。 例如 ```java public class CheckedExceptionsFromConstrctor { Document doc = null; public CheckedExceptionsFromConstrctor() throws IOException, JDOMException { //Some other code } public CheckedExceptionsFromConstrctor(String s) throws IOException, JDOMException { //Some other code } { doc = new SAXBuilder(false).build(new StringReader(new String("<users/>"))); } } ``` 或者: ```java public class CheckedExceptionsFromConstrctor { Document doc = null; public CheckedExceptionsFromConstrctor() throws IOException, JDOMException { //Some other code } public CheckedExceptionsFromConstrctor(String s) throws IOException, JDOMException { //Some other code } { try { doc = new SAXBuilder(false).build(new StringReader(new String("<users/>"))); } catch (JDOMException | IOException e) { throw e; } } } ``` 以上兩種解決方案均有效,編譯器將允許您執行此操作。 **靜態初始化器無法引發受檢異常** 上面的推理是針對非靜態初始化器的。 如果您的類中有靜態初始化器,則必須處理受檢異常。 您不得以任何可能的方式扔它們。 ```java public class CheckedExceptionsFromConstrctor { static Document doc = null; public CheckedExceptionsFromConstrctor() { //Some other code } static { try { doc = new SAXBuilder(false).build(new StringReader(new String("<users/>"))); } catch (JDOMException | IOException e) { e.printStackTrace(); //You must handle the exception here } } } ``` 就是這個話題。 希望你喜歡它。 如果您在評論部分有任何想法,我們將不勝感激。 而且,不要忘了通過電子郵件訂閱,以獲取諸如此類鮮為人知的新特性。 **祝您學習愉快!**
                  <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>

                              哎呀哎呀视频在线观看