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

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

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

      淺談Java異常處理機制

      前言

      ??在 Java 中,異常被當作對象來處理,所有的異常都有一個共同的祖先java.lang.Throwable類。Throwable有兩個重要的子類Exception(異常) 和 Error(錯誤),二者都是 Java 異常處理的重要子類,各自都包含大量子類。先從整體看看異常類層次結構圖,使我們對異常體系有一個大概的認識:

      Java異常類層次結構圖,來源于參考文獻1.

      ??Error:是程序無法處理的錯誤,表示運行應用程序中較嚴重問題。大多數錯誤與代碼編寫者執行的操作無關,而表示代碼運行時 JVM(Java 虛擬機)出現的問題。例如,Java虛擬機運行錯誤(Virtual MachineError),當 JVM 不再有繼續執行操作所需的內存資源時,將出現 OutOfMemoryError。這些異常發生時,Java虛擬機(JVM)一般會選擇線程終止。

      ??Exception:是程序本身可以處理的異常,它有一個重要的子類 RuntimeException。RuntimeException 異常由Java虛擬機拋出,主要指編碼、環境或者用戶操作輸入出現問題。

      ??注意,異常和錯誤的區別:異常能被程序本身處理,錯誤是無法處理的。使用try-catch-finally捕獲異常,其捕獲語法如下:

      try {
           需要被檢測的代碼;
      } catch(異常類 變量名) {
           異常處理代碼;
      } fianlly {
            一定會執行的代碼;
      }
      

      異常分類

      ??總體上我們根據Javac對異常的處理要求,將異常類分為2類,即非受檢查異常和受檢查異常。

      ??不受檢查異常(unckecked exception):Error 和 RuntimeException 以及它們的子類。javac在編譯時,不會提示和發現這樣的異常,不要求在程序中處理這些異常。此類異常的出現常常是代碼本身有問題造成的,應該從業務邏輯層面去解決并改進代碼,而不是去通過異常處理機制解決。如分母為零的算術異常ArithmeticException,使用了空對象NullPointerException等等。

      ??受檢查異常(checked exception):除了 Error 和 RuntimeException的其它異常。javac強制要求程序員處理這樣的異常,要么用try-catch語句捕獲,要么用throws子句聲明拋出;否則,直接導致編譯失敗。這樣的異常一般是由程序的運行環境導致的,因為程序可能被運行在各種未知的環境下,而程序員無法干預用戶如何使用這些程序,于是就應該為這樣的異常時刻準備著如FileNotFoundException 等。

      ??需要明確的是:受檢查和非受檢查是對于javac來說的,這樣就很好理解和區分了。

      常見異常及其分類

      ??面試官也可能讓你舉出幾個常見的異常情況并將其分類,未雨綢繆,下面列出了一些 Java 中常見的異常及其分類。

      RuntimeException

      1. 數組下標越界異常 ArrayIndexOutOfBoundsException;

      2. 空指針異常 NullPointerException;

      3. 類型轉換異常 ClassCastException;

      4. 非法參數異常 IllegalArgumentException。

      UncheckedException

      1. 指定變量不存在異常 NoSuchFieldException 。

      常見問題

      1. Excption與Error的關系是什么?
        Excption與Error都是Throwable的子類。
        Error和Exception的區別:Error通常是災難性的、致命的錯誤,是程序無法控制和處理的。當出現這些異常時,Java虛擬機(JVM)一般會選擇終止線程。Exception通常情況下是可以被程序處理的,并且在程序中應該盡可能的捕獲這些異常。

      2. 如何自定義一個異常?
        通過繼承一個異常類自定義異常,運行時異常繼承 RuntimeException,編譯時異常繼承 Exception。

      3. try-catch-finally,try中有return,finally還執行嗎?
        執行。finally代碼塊的執行在return之前,不管try中是否有異常,它都執行。溫馨提示,如果finally中有return,則會在try的return之前執行,導致不執行try中的return。

      4. throw 和throws關鍵字的區別
        throw用于在函數內拋出異常對象,后面跟的是異常對象。
        throws用于在方法聲明上拋出異常類,后面跟的異常類名,可以跟多個,用逗號隔開。

      ??例如:

      static void demoException() throws Exception {
           throw new Exception("error msg");
      }
      
      1. 舉個內存溢出的例子
      public static void main(String[] args) {
            //java.lang.OutOfMemoryError 內存溢出錯誤
         byte[] buf = new byte[1024*1024*700];
      }
      

      小結

      ??以上就是這篇文章的全部內容了,希望本文對大家的學習或者工作能帶來一定的幫助,如有疑問請留言交流。Wiener在此祝各位生活愉快!工作順利!

      Reference

      1.  http://www.rzrgm.cn/lulipro/p/7504267.html

      posted @ 2021-03-07 15:23  樓蘭胡楊  閱讀(206)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产在线线精品宅男网址| 日本中文字幕不卡在线一区二区| 亚洲三级香港三级久久| 免费无遮挡毛片中文字幕| 亚洲熟妇av一区二区三区宅男| 少妇尿尿一区二区在线免费 | 华池县| 精品无套挺进少妇内谢| 国产色无码专区在线观看| 国产成人精品永久免费视频| 国产午夜成人无码免费看| 赤城县| 欧美日韩国产图片区一区| 日韩国产亚洲一区二区三区| 进贤县| 18禁无遮拦无码国产在线播放| 色偷偷中文在线天堂中文| 久久国产成人高清精品亚洲| 一本久道中文无码字幕av| 91中文字幕一区在线| av一本久道久久波多野结衣 | 亚洲国产精品毛片在线看| 亚洲区精品区日韩区综合区| 久久久久青草线蕉亚洲| 亚洲区综合中文字幕日日| 色欲av亚洲一区无码少妇 | 国产精品色一区二区三区| 五月天免费中文字幕av| 中文字幕结果国产精品| 日韩中文字幕综合第二页| 久久婷婷大香萑太香蕉av人| 久久天天躁狠狠躁夜夜2020老熟妇| 久久精品国产成人午夜福利| 国产乱人伦无无码视频试看| 免费无码一区无码东京热| 日本黄色三级一区二区三区| 福利一区二区不卡国产| 男女啪啪高清无遮挡免费| 亚洲AV国产福利精品在现观看| 塘沽区| 色综合久久婷婷88|