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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                真正工作了才發現,Java里面的異常在真正工作中使用還是十分普遍的。什么時候該拋出什么異常,這個是必須知道的。 當然真正工作里面主動拋出的異常都是經過分裝過的,自己可以定義錯誤碼和異常描述。 下面小寶鴿就為大家介紹一個Java異常簡單封裝的例子。 在給出異常分裝例子之前,需要給大家普及Java里面的checked異常和unchecked異常的個概念。 ### 一、checked異常和unchecked異常 這里之所以讓大家清楚checked異常和unchecked異常概念,是因為:待會我們的異常是繼承unchecked異常RuntimeException的。了解一下并無壞處嘛 **checked異常:** 表示無效,不是程序中可以預測的。比如無效的用戶輸入,文件不存在,網絡或者數據庫鏈接錯誤。這些都是外在的原因,都不是程序內部可以控制的。 必須在代碼中顯式地處理。比如try-catch塊處理,或者給所在的方法加上throws說明,將異常拋到調用棧的上一層。 繼承自java.lang.Exception(java.lang.RuntimeException除外)。 **unchecked異常:** 表示錯誤,程序的邏輯錯誤。是RuntimeException的子類,比如IllegalArgumentException, NullPointerException和IllegalStateException。 不需要在代碼中顯式地捕獲unchecked異常做處理。 繼承自java.lang.RuntimeException(而java.lang.RuntimeException繼承自java.lang.Exception)。 看下面的異常結構圖或許層次感更加深些: ![](https://box.kancloud.cn/2016-03-10_56e125468cee3.jpg) ### 二、異常分裝實例 **2.1、添加一個枚舉LuoErrorCode.java如下:** ~~~ package com.luo.errorcode; public enum LuoErrorCode { NULL_OBJ("LUO001","對象為空"), ERROR_ADD_USER("LUO002","添加用戶失敗"), UNKNOWN_ERROR("LUO999","系統繁忙,請稍后再試...."); private String value; private String desc; private LuoErrorCode(String value, String desc) { this.setValue(value); this.setDesc(desc); } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } @Override public String toString() { return "[" + this.value + "]" + this.desc; } } ~~~ **注意!!!這里我們重寫了LuoErrorCode的toString方法,至于為什么要這樣,后面會提到,客觀請繼續看。** **2.2、創建一個異常類BusinessException.java,繼承RuntimeException:** ~~~ package com.luo.exception; public class BusinessException extends RuntimeException { private static final long serialVersionUID = 1L; public BusinessException(Object Obj) { super(Obj.toString()); } } ~~~ 這里的代碼雖然短,但是有兩點需要注意的!!!第一點是其繼承了RuntimeException,因為一般我們的業務異常都是運行時異常。第二點,這里的構造方法調用父方法super(Obj.toString());,這就是重寫了LuoErrorCode的toString方法的原因了,如果還不明白,看完后面的你就明白了。 **2.3、測試類ExceptionTest.java:** ~~~ package com.luo.test; import com.luo.errorcode.LuoErrorCode; import com.luo.exception.BusinessException; public class ExceptionTest { public static void main(String args[]) { Object user = null; if(user == null){ throw new BusinessException(LuoErrorCode.NULL_OBJ); } } } ~~~ **運行結果:** ![](https://box.kancloud.cn/2016-03-15_56e77db822c64.jpg) 補充一下:在我們實際項目里面,比如別人調用你接口,你可能需要先看他傳過來的對象是不是空的,先判斷如果傳過來的對象為空給有友好的提示”[LUO001]對象為空”,不然后面的代碼估計會出現空指針異常了。 一般公司都會分裝一個基礎框架,異常分裝是其中一部分,當然他們對異常的分裝肯定比我這個例子復雜多,因此本例僅供參考! 如果懶得copy和paste的話,直接下載工程吧: [http://download.csdn.net/detail/u013142781/9422684](http://download.csdn.net/detail/u013142781/9422684)
                  <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>

                              哎呀哎呀视频在线观看