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

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

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

      Java catch多重異常捕獲

      摘要:Java中多重異常捕獲機制可以更加簡潔、有效地處理多個異常,提高了程序的魯棒性,是編寫高質量代碼的重要技巧之一。

      ??小編在《淺談Java異常處理機制》中梳理了異常處理機制,在《Java 異常處理try、catch、finally和return執行順序》中介紹了異常處理時,try、catch、finally和return的執行順序,本文介紹如何使用catch捕獲多個異常。

      ??當我們編寫代碼時,經常會遇到異常,如文件不存在、空指針、數組下標越界等等異常。因為異常的發生可能會導致程序崩潰,因此需要對異常進行捕獲和處理。對異常處理有三個核心關鍵字:try、catch、finally,常用使用方法如下:

      try { 
          //有可能出現異常的語句
      } catch (異常類型A 對象) {
          //異常處理methodA
      } catch (異常類型B 對象) {
          //異常處理methodB
      } finally {
          //不管有沒有出現異常,這里的代碼都會執行
      }
      

      ??我們在try語句中捕獲可能出現異常的代碼。如果try捕獲到異常,則會與和它匹配的catch中的異常類型依次進行比對,如果相同則進行處理;如果不匹配,則繼續匹配后續的catch類型;如果都不匹配,那么表示該異常無法由catch塊處理,需要采用JVM默認的異常處理方式進行處理。最后不管有沒有異常,都會執行finally中的語句塊。溫馨提示:finally語句塊可以省略,如果省略,則在執行完catch語句塊之后,程序繼續執行后邊的代碼。

      ??Java提供的 catch 代碼塊雖然客觀上提高了程序的健壯性,但是也導致了程序代碼量大大增加。如果有些異常種類不同,但捕獲之后的處理邏輯是相同的,例如把methodB換成了methodA,則可以使用如下多重異常捕獲技術:

      try { 
          //有可能出現異常的語句
      } catch (異常類型A | 異常類型B 對象) {
          //異常處理methodA
      } finally {
          //不管有沒有出現異常,這里的代碼都會執行
      }
      

      ??什么是多重異常捕獲?就是在同一個catch語句塊中捕獲多種不同的異常,多個異常類型之間使用管道符|隔開。

      ??使用多重異常捕獲時,如下幾點需要各位老鐵注意:

      • 多種異常類型之間用管道符|隔開。
      • 捕獲多種類型的異常時,異常變量被隱式的 final 修飾,因此不能對異常變量重新賦值。
      • 在捕捉異常時,請記錄異常信息,以便定位問題。
      • 多個異常類型必須是從小到大排列,即父類異常必須放在子類異常之后,這是因為Java會優先匹配catch語句的第一個參數。
      • 盡可能使用特定的異常類型來捕獲異常。這可以幫助你更準確地識別問題,并采取適當的措施。例如,如果你正在處理文件讀取錯誤,則可以捕獲FileNotFoundException異常。
      • 避免捕獲所有異常。這可能會掩蓋真正的問題,并使調試變得更加困難。相反,只捕獲你預計可能會出現的異常。

      ??下面程序示范了多異常捕獲。

      public class ExceptionTest {
          public static void main(String[] args) {
              try {
                  int a = Integer.parseInt(args[0]);
                  int b = Integer.parseInt(args[1]);
                  int c = a / b;
                  System.out.println("您輸入的兩個數相除的結果是:" + c);
              } catch (IndexOutOfBoundsException | NumberFormatException | ArithmeticException finalExc) {
                  System.out.println("發生了數組越界、數字格式異常、算術異常之一");
                  // 捕獲多異常時,異常變量默認有final修飾,故下面的代碼有錯:
      //            finalExc = new ArithmeticException("test");
              } catch (Exception e) {
                  System.out.println("未知異常");
                  // 捕獲一種類型的異常時,異常變量沒有final修飾,所以下面代碼完全正確
                  e = new RuntimeException("test");
              }
          }
      }
      

      ??上面程序中第一個catch塊使用了IndexOutOfBoundsException|NumberFormatException|ArithmeticException來定義需要攔截的異常類型,它表明該 catch 塊可以同時捕獲這 3 種類型的異常。捕獲多種類型的異常時,異常變量使用隱式的 final 修飾,因此如果去掉finalExc = new ArithmeticException("test"); 前面的注釋,代碼將產生編譯錯誤,提示Cannot assign a value to final variable 'finalExc';但是,捕獲一種類型的異常時,異常變量沒有被final關鍵詞修飾,因此e = new RuntimeException("test")可以編譯通過。

      ??由于NumberFormatException是Exception的子類,所以,把Exception放在了NumberFormatException后面;否則,后者起不到作用。

      posted @ 2023-06-21 21:06  樓蘭胡楊  閱讀(2197)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产太嫩了在线观看| 99精品国产精品一区二区| 国产黄色大片网站| 青草青草视频2免费观看| 亚洲 欧美 中文 日韩aⅴ| 一二三四中文字幕日韩乱码| 2022最新国产在线不卡a| 精品一区二区三区自拍图片区| 国产一区二区日韩在线| 男女激情一区二区三区| 无码av最新无码av专区| 十八禁午夜福利免费网站| 亚洲熟少妇一区二区三区| 九九成人免费视频| 久久亚洲人成网站| 亚洲中文字幕一区二区| 污网站大全免费| 内射中出无码护士在线| 午夜福利精品国产二区| 思茅市| 老熟妇国产一区二区三区 | 丝袜美腿亚洲综合第一区| 花式道具play高h文调教| 国产美女午夜福利视频| 亚洲色大成网站WWW久久| 真实单亲乱l仑对白视频| 国产精品18久久久久久麻辣| 欧洲免费一区二区三区视频| 国产亚洲一二三区精品| 久久精品国产亚洲av高| 国产精品亚洲二区在线播放| 99久久er热在这里只有精品99| 成人国产一区二区三区精品| 国产资源精品中文字幕| 国产初高中生在线视频| 一个人看的www视频免费观看| 中国亚州女人69内射少妇| 夜爽8888视频在线观看| 亚洲色欲色欲天天天www| 国产精品中文第一字幕| 亚洲精品国产自在现线最新|