<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 自定義異常 – 最佳實踐 > 原文: [https://howtodoinjava.com/java/exception-handling/best-practices-for-for-exception-handling/](https://howtodoinjava.com/java/exception-handling/best-practices-for-for-exception-handling/) 我們已經在幾乎所有行業標準應用程序的代碼中使用了 **java 自定義異常**處理。 通常的方法是創建一些自定義的異常類,以擴展基本的[異常處理最佳實踐](https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html "Exception class"),這可能會使您更有意義。 ## 1)Java 自定義異常處理 - 新方法 #### 1.1 傳統異常處理 我們的新方法針對每個新的異常情況使用[**靜態內部類**](https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html)。 傳統上,我們通過擴展`Exception`類來創建`DBException`類。 現在,每次遇到需要拋出與數據庫相關的異常的情況時,我們通常會創建`DBException`的實例,以消息的形式放置一些信息并將其拋出。 現在,讓我們考慮以下幾種情況,我們發現需要拋出`DBException`: 1. SQL 執行錯誤 2. 我們預計至少需要一行數據,就沒有數據 3. 存在多行,我們希望只有一行 4. 無效的參數錯誤 5. 還有更多這樣的情況 上述方法的問題在于,在應處理這些異常的`catch`塊或應用程序代碼中,`DBException`沒有提供足夠的信息來唯一地處理每個居留權列出的用例。 #### 1.2 內部類的新異常處理 讓我們使用內部類解決上述問題,我們將為每個用例創建一個類,然后將其分組到`DBException`類中。 讓我們從創建為`abstract`的`BaseException`類開始,它將是我們所有異常類的超類。 ```java // Make this class abstract so that developers are forced to create // suitable exception types only public abstract class BaseException extends Exception{ //Each exception message will be held here private String message; public BaseException(String msg) { this.message = msg; } //Message can be retrieved using this accessor method public String getMessage() { return message; } } ``` 不是時候創建新的`Exception`內部類。 ```java public class DBExeption { //SQL execution error public static class BadExecution extends BaseException { private static final long serialVersionUID = 3555714415375055302L; public BadExecution(String msg) { super(msg); } } //No data exist where we expect at least one row public static class NoData extends BaseException { private static final long serialVersionUID = 8777415230393628334L; public NoData(String msg) { super(msg); } } //Multiple rows exist where we expect only single row public static class MoreData extends BaseException { private static final long serialVersionUID = -3987707665150073980L; public MoreData(String msg) { super(msg); } } //Invalid parameters error public static class InvalidParam extends BaseException { private static final long serialVersionUID = 4235225697094262603L; public InvalidParam(String msg) { super(msg); } } } ``` 在這里,我們為開始時確定的每種可能的錯誤情況創建了一個內部類。 可能還有更多其他功能。 *僅取決于您確定和添加更多類。* #### 1.3 如何使用自定義異常 現在,要了解它的用處,讓我們創建一個異常并將其拋出。 然后,我們將在日志中看到錯誤消息。 ```java public class TestExceptions { public static void main(String[] args) { try { throw new DBExeption.NoData("No row found for id : x"); } catch(Exception e) { e.printStackTrace(); } } } ``` 程序輸出: ```java com.exception.DBExeption$NoData: No row found for id : x at com.test.TestExceptions.main(TestExceptions.java:7) ``` 如您所見,在異常棧跟蹤中的日志消息,它已變得**更具信息性**。 它清楚地說明了什么是錯誤。 同樣在應用程序代碼中,您可以**檢查自定義異常**的實例并進行相應的處理。 ## 2\. 使用內部類作為自定義異常的優點 1. 最重要的好處是,如果您的開發人員編寫了一些可疑的消息文本,那么您也可以清楚地觀察到實際出了什么問題。 2. 您可以在處理不同異常情況的不同情況下使用實例比較。 3. 您無需針對大量特殊情況發送單個異常。 4. 對于知道期望確切的異常類的否定情況,它很容易編寫單元測試用例。 5. 日志記錄更加有意義和有用。 我希望有關 Java 自定義異常的帖子對您??有所幫助。 如果您有任何建議,請給我留言。 學習愉快!
                  <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>

                              哎呀哎呀视频在线观看