<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Java `throw`關鍵字 > 原文: [https://howtodoinjava.com/java/exception-handling/throw-vs-throws/](https://howtodoinjava.com/java/exception-handling/throw-vs-throws/) 在 Java 異常處理中,`throw關鍵字用于顯式拋出方法或構造器中的異常。`throws`關鍵字**用于聲明該方法或構造器可能拋出的異常列表。 ## 1\. Java `throw`關鍵字 #### 1.1 語法 要從方法或[構造器](https://howtodoinjava.com/oops/java-constructors/)引發異常,請使用[`throw`關鍵字](https://howtodoinjava.com/java-keywords/)以及異常類的實例。 ```java public void method() { //throwing an exception throw new SomeException("message"); } ``` #### 1.2 處理受檢與非受檢異常 如果我們從方法中拋出[非受檢的異常](https://howtodoinjava.com/java/exception-handling/checked-vs-unchecked-exceptions-in-java/),則處理該異常或在`throws`子句中聲明不是強制性的。 例如,`NullPointerException`是非受檢的異常。 ```java public class JavaExample { public static void main(String[] args) { method(); } public static void method( ) { throw new NullPointerException(); } } ``` 但是,如果我們使用`throw`語句拋出受檢異常,則必須在`catch`塊**中處理該異常,或者必須使用`throws`聲明顯式地聲明該方法。 例如,`FileNotFoundException`是受檢異常。 ```java public class JavaExample { public static void main(String[] args) { try { method(); } catch (FileNotFoundException e) { e.printStackTrace(); } } public static void method( ) throws FileNotFoundException { throw new FileNotFoundException(); } } ``` 在 Java 中,`Error`和`RuntimeException`的每個子類都是非受檢的異常。 一個受檢的異常是`Throwable`類下的所有其他內容。 #### 1.3 異常傳播 在調用棧中,異常會在方法與方法之間傳播,直到被捕獲為止。 因此,如果`a()`調用`b()`,然后調用`c()`,又調用`d()`,并且如果`d()`拋出異常,則該異常將從`d`傳播到`c`到`b`傳播到`a`,除非這些方法之一捕獲異常。 如上所述,對異常處理程序的搜索從發生錯誤的方法開始,然后以與調用方法相反的順序在調用棧中進行。 找到合適的處理程序([`catch`塊](https://howtodoinjava.com/java/exception-handling/try-catch-finally/))后,運行時系統會將異常傳遞給處理程序。 如果未找到異常處理程序,則異常到達 JVM 的默認異常處理程序,該程序將異常詳細信息打印到日志并終止應用程序。 ## 2\. Java `throws`關鍵字 Java `throws`關鍵字用于聲明方法執行期間可能發生的異常列表。 #### 2.1 語法 要聲明異常列表,請使用`throws`關鍵字以及異常類名稱。 ```java public static void method( ) throws FileNotFoundException, ConnectionException { //code } ``` #### 2.2 可以拋出受檢和非受檢的異常 我們可以使用`throws`子句聲明兩種類型的異常,即受檢和非受檢的異常。 但是調用給定方法**必須僅處理受檢異常**。 非受檢異常的處理是可選的。 ```java public class JavaExample { public static void main(String[] args) { try { //Can skip handling of NullPointerException (unchecked exception) method(); } catch (FileNotFoundException e) { e.printStackTrace(); } } public static void method( ) throws NullPointerException, FileNotFoundException { //code } } ``` ## 3\. Java 中`throw`和`throws`之間的區別 1. `throw`關鍵字用于從任何方法或構造器中顯式拋出單個異常,而`throws`關鍵字用于方法和構造器聲明中,表示該方法可能引發該異常。 2. `throw`后跟異常類的實例,而`throws`后跟異常類的名稱。 3. `throw`用于方法和構造器,其中`throws`與方法和構造器簽名一起使用。 4. 我們可以使用`throw`僅拋出單個異常,但是可以使用`throws`聲明多個異常,其中之一可以通過方法拋出也可以不通過方法拋出。 5. 受檢的異常將傳播到調用方方法,而非受檢的異常將不會傳播,因此可能不需要顯式的異常處理。 6. 使用`throw`關鍵字,我們還可以中斷`switch`語句或循環,而無需使用`break`關鍵字,使用`throws`無法執行它。 學習愉快!
                  <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>

                              哎呀哎呀视频在线观看