<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      shuijibaobao

      導航

       

      1. 異常概念

      在程序中也是一樣,程序猿是一幫辦事嚴謹、追求完美的高科技人才。在日常開發中,絞盡腦汁將代碼寫的盡善盡美,在程序運行過程中,難免會出現一些奇奇怪怪的問題。有時通過代碼很難去控制,比如:數據格式不對、網絡不通暢、內存報警等。一位好的程序猿也要學習如何處理異常,完善我們的代碼和程序。

      2. 常見異常

          java.lang.RuntimeException: 運行時異常
          ClassCastException: 類類型轉換異常,當試圖將對象強制轉換為不是實例的子類時,拋出該異常;
          ArrayIndexOutOfBoundsException: 數組下標越界異常,當你使用不合法的索引訪問數組時會拋出該異常;
          NullPointerException: 空指針異常,通過null進行方法和屬性調用會拋出該異常;
          ArithmeticException: 算術運算異常,除數為0,拋出該異常;
          NumberFormatException: 數字轉換異常,當試圖將一個String轉換為指定的數字類型,而該字符串確不滿足數字類型要求的格式時,拋出該異常;
          InputMismatchException: 輸入不匹配異常,輸入的值數據類型與設置的值數據類型不能匹配。
      

      2.1 java異常體系結構:

      從上圖中可以看到:

      1. Throwable : 是異常體系的頂層類,其派生出兩個重要的子類 , Error 和 Exception
      2. Error : 指的是 Java 虛擬機無法解決的嚴重問題,比如: JVM 的內部錯誤、資源耗盡等 ,典型代表:
        StackOverflowError 和 OutOfMemoryError ,一旦發生回力乏術。
      3. Exception : 異常產生后程序員可以通過代碼進行處理,使程序繼續執行。比如:感冒、發燒。我們平時所說的異常就是Exception 。(主要研究)

      3. 異常分類

      3.1 編譯時異常(CompilationException):

      通俗點兒講:就是我們在編寫代碼時的異常(比如代碼下面出現紅色的波浪線)

      3.1.1 IOException 輸入輸出流異常

      廣泛的說,什么時候會有IOException ,比如你文件都不到的時候 ,你在做數據庫操作的時候數據庫底層出現問題 ,或者你系統IO出問題了 ,系統拿不到文件句柄 ,你說的讀著讀著突然被刪了,你可以試試,書不定真可以 ,你可以看有多少IOExeption個子類,差不多就有多少種類型。

      3.1.2 FileNotFoundException 文件找不到的異常

      注意,這里的找不到是在你的編譯結果文件夾里面找不到,而不是在你的工程里面找不到,很多同學說自己工程里面有這個文件,為什么還要報這個異常?這個時候,你最好跑到你的編譯文件放的文件夾下面,比如tomcat的webapps文件夾下面,找找你的工程對應的文件夾,看看那個里面有沒有你的文件

      3.1.3 ClassNotFoundException 類找不到異常

      屬于編譯時異常,是在classloader加載類的時候發現類不存在在類路徑的時候報出的。

      3.1.4 DataFormatException 數據格式化異常

      3.1.5 NoSuchFieldException 沒有匹配的屬性異常

      3.1.6 NoSuchMethodException 沒有匹配的方法異常

      3.1.7 SQLException 數據庫操作異常

      3.1.8 TimeoutException 執行超時異常

      3.2 運行時異常(RuntimeException):

      通俗點兒講:就是我們在執行代碼時的異常(運行框會報出以下名字的異常)

      ArrayIndexOutofBoundsException 數組越界異常
      ClassCastException 類型轉換異常
      NullPointerException 空指針異常
      IllegalAccessException 非法的參數異常
      InputMismatchException 輸入不匹配異常

      4. 異常的處理方法

      4.1 事前防御型

      通俗點兒講:在操作之前就做充分的檢查,例如:

      boolean ret = false;
      ret = 登陸游戲();
      if (!ret) {
          處理登陸游戲錯誤;
          return;
      }
      ret = 開始匹配();
      if (!ret) {
          處理匹配錯誤;
          return;
      }
      ret = 游戲確認();
      if (!ret) {
          處理游戲確認錯誤;
          return;
      }
      
      優點:可以時時了解代碼中的異常方便且快速找到異常位置并處理。
      缺陷:正常流程和錯誤處理流程代碼混在一起 , 代碼整體顯的比較混亂,過程繁瑣。
      (不加return的話,一旦出現一個異常,后面異常會一起拋出,分辨不清)
      

      4.2 事后認錯型

      通俗點兒講:就是先操作, 遇到問題再處理,例如:

      try {
          登陸游戲();
          開始匹配();
          游戲確認();
          選擇英雄();
          載入游戲畫面();
          ...
      } catch (登陸游戲異常) {
          處理登陸游戲異常;
      } catch (開始匹配異常) {
          處理開始匹配異常;
      } catch (游戲確認異常) {
          處理游戲確認異常;
      } catch (選擇英雄異常) {
          處理選擇英雄異常;
      } catch (載入游戲畫面異常) {
          處理載入游戲畫面異常;
      }
      

      上述代碼意思是:try{}中編寫的是可能出現的異常的代碼,catch()中寫異常的名字例如(NullPointerException、ArithmeticException等),catch(){}中寫異常的處理。(不明白的話可以往下面看,有詳細介紹try()和catch() )

      優勢:正常流程和錯誤流程是分離開的 , 程序員更關注正常流程,代碼更清晰,容易理解代碼
      異常處理的核心思想 。
      缺點:部分異常執行后需要及時處理,這個方式需要等待try{}中所有代碼執行完成
      

      特別注意:如果catch()中異常之間有父子關系,那么一定是子類異常在前catch,父類異常在后catch,否則報錯。

      5. 編寫異常throw(重點)

      有些情況下我們想自定義一個異常,或者我們忘記了java中的異常名字也需要自定義異常,或者在 Java 中,可以借助 throw 關鍵字,拋出一個指定的異常對象,將錯誤信息告知給調用者。具體語法如下:(使用很頻繁)

      throw new XXXException("異常產生的原因");
      

      實例:實現一個獲取數組中任意位置元素的方法。

      public static int getElement(int[] array, int index){
          if(null == array){
              throw new NullPointerException("傳遞的數組為null");
          }
          if(index < 0 || index >= array.length){
              throw new ArrayIndexOutOfBoundsException("傳遞的數組下標越界");
          }
          return array[index];
      }
      public static void main(String[] args) {
          int[] array = {1,2,3};
          getElement(array, 3);
      }
       
      結果:
      傳遞的數組下標越界
      

      【 注意事項 】

      1. throw 必須寫在方法體內部
      2. 拋出的對象必須是 Exception 或者 Exception 的子類對象
      3. 如果拋出的是 RunTimeException 或者 RunTimeException 的子類,則可以不用處理,直接交給 JVM 來處理,JVM處理完程序終止,這就是我們平常遇到異常時所看到的機制,也是java默認的。
      4. 如果拋出的是編譯時異常,用戶必須處理,否則無法通過編譯
      5. 異常一旦拋出,其后的代碼就不會執行(特別注意)
      posted on 2024-08-31 20:46  水吉z  閱讀(20)  評論(0)    收藏  舉報
       
      主站蜘蛛池模板: 五月丁香色综合久久4438| 国产成人午夜精品永久免费| 一级片黄色一区二区三区| 亚洲AV无码成H人动漫无遮挡| 蕲春县| 国内自拍小视频在线看| 国产v亚洲v天堂无码久久久| 宅男噜噜噜66在线观看| 国产精品久久久福利| 四虎影视www在线播放| 高清精品视频一区二区三区| 四虎永久免费高清视频| 亚洲国产精品成人无码区| 特级做a爰片毛片免费看无码 | 欧美精品日韩精品一卡| 精品偷拍一区二区三区| 日韩精品一区二区av在线| 久久精品波多野结衣| 中文字幕人妻有码久视频| 免费无码AV一区二区波多野结衣| 久久本道综合久久伊人| 蜜臀av色欲a片无人一区| 中国女人熟毛茸茸A毛片| 久久精品国产福利一区二区| 日韩av无码一区二区三区| 国产精品 欧美 亚洲 制服| 奇米777四色在线精品| 久久天天躁狠狠躁夜夜2020老熟妇| 黄色网站免费在线观看| 在线精品自拍亚洲第一区| 色噜噜狠狠成人综合| 久久久久久国产精品美女| 日韩激情一区二区三区| 99久久无码私人网站| 亚洲第一香蕉视频啪啪爽| 国产亚洲精品国产福APP| 国产精品午夜av福利| 亚洲最大色综合成人av| 精品国产一区二区三区国产馆| 精品无码三级在线观看视频 | 夜夜添无码一区二区三区|