JAVA裡的異常

來源:互聯網
上載者:User

標籤:

一、概念和分類

JAVA程式設計語言中,異常對象都是Throwable類的一個執行個體。

  其中,Error類階層描述了JAVA運行時系統的內部錯誤和耗盡錯誤。這種錯誤無法操作,不會拋出。在設計JAVA程式時,我們需要關注Exception。

  Exception包含兩個分支:RuntimeException和其他異常。劃分兩個分支的規則是:由程式錯誤導致的異常屬於RuntimeException,而程式本身沒有問題,但由於I/O錯誤這類問題導致的異常屬於其他異常。

  RuntimeException即是運行時異常,即在程式啟動並執行時候才出現的異常,又稱“未檢查異常”,意即“編譯器未檢查出的異常”。

  

  派生於RuntimeException的異常包含下面幾種情況:

  •   錯誤的類型轉換。
  •       數組訪問越界
  •       訪問null 指標

  其他異常包括:

  • 試圖在檔案發問後面讀取資料
  • 試圖開啟一個不存在的檔案。
  • 試圖根據給定的字串尋找Class對象,而這個字串表示的類並不存在。

 二、異常的聲明

  在JAVA的方法裡,如果可能遇到無法處理的情況,比如要開啟的檔案並不存在,這時就要聲明異常。聲明異常的方法是在方法的首部聲明所有可能拋出的異常。比如標準類庫中的FileInputStream類的一個構造器的聲明:

  

  一個方法必須聲明所有可能拋出的已檢查異常(Exception中RuntimeException之外的其他異常),而未檢查異常要麼不可控制(Error),要麼就應該避免發生(RuntimeException)。

  如果一個方法沒有聲明所有可能發生的已檢查異常,編譯器就會報錯。

三、異常的拋出

  異常的拋出使用“throw”關鍵字,比如一個方法可能出現EOFException,我們希望它拋出這個異常,可以用下面的語句:

  throw new EOFExcetion();

 

或: 

  EOFExcetion e = new EOFException();  throw e;

 

  如果一個方法裡使用了throw關鍵字拋出了一個異常,並且這個異常又不是RuntimeException,那麼必須在方法首部用throws聲明這個異常。

  如果一個方法用throws聲明了一個異常,那麼調用這個方法的方法就必須對這個異常進行捕獲,或者繼續聲明。(這個有一點例外,如果父類方法中沒有聲明異常,那麼子類在覆蓋父類這個方法的時候也不能聲明異常,見JComponent.paintComponent方法)

四、建立異常類

  有時候我們可能會遇到所有標準異常類都無法準確處理的問題,比如 int age = -1;這行代碼本身沒有什麼問題,但是實際上年齡不可能為負數。這個時候我們就需要自己來建立一個異常類:

  

  

五、異常的捕獲

  如果某個異常沒有在任何地方進行捕獲,那麼程式就會終止執行,並在控制台上列印出異常資訊,其中包括異常的類型和堆棧和內容。

  要想捕獲一個異常,必須設定 try/catch 語句塊:

  try{    someCode;  }catch(ExceptionType e){    handle for this Exception;  }

 

  •   如果在try語句塊中的任何代碼拋出了一個在catch子句中說明的異常類,那麼程式將跳過try語句塊的其餘代碼,並且執行catch子句中的處理代碼。
  •   如果在try語句塊中的代碼沒有拋出任何異常,那麼程式將跳過catch語句。
  •   如果方法中的任何代碼拋出了一個在catch子句中沒有聲明的異常類型,那麼這個方法就會立刻退出。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

JAVA裡的異常

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.