首頁 > Java > Java入門 > 主體

java中異常類型及異常處理的詳細介紹

王林
發布: 2019-11-30 15:00:27
轉載
2948 人瀏覽過

java中異常類型及異常處理的詳細介紹

一、異常實作及分類

#1.先看下異常類別的結構圖

java中異常類型及異常處理的詳細介紹

上圖可以簡單展示異常類別實作結構圖,當然上圖不是所有的異常,使用者自己也可以自訂異常實作。上圖已經足夠幫我們解釋和理解異常實現了:

java相關免費視訊教學:java教學影片

1.所有的例外都是從Throwable繼承而來的,它是所有異常的共同祖先。

2.Throwable有兩個子類,ErrorException

其中Error是錯誤,對於所有的編譯時期的錯誤以及系統錯誤都是透過Error拋出的。這些錯誤表示故障發生於虛擬機器本身、或發生在虛擬機器試圖執行應用時,如Java虛擬機器執行錯誤(Virtual MachineError)、類別定義錯誤(NoClassDefFoundError)等。

這些錯誤是不可查的,因為它們在應用程式的控制和處理能力之外,而且絕大多數是程式執行時不允許出現的狀況。對於設計合理的應用程式來說,即使確實發生了錯誤,本質上也不應該試圖去處理它所引起的異常狀況。在 Java中,錯誤透過Error的子類別來描述。

3.Exception

是另一個非常重要的例外子類別。它規定的異常是程式本身可以處理的異常。

異常和錯誤的差別是,異常是可以被處理的,而錯誤是沒法處理的。 

4.Checked Exception

可檢查的異常,這是編碼時非常常用的,所有checked exception都是需要在程式碼中處理的。它們的發生是可以預測的,正常的一種情況,可以合理的處理,例如IOException,或一些自訂的異常。除了RuntimeException及其子類別以外,都是checked exception。

5.Unchecked Exception

RuntimeException及其子類別都是unchecked exception。例如NPE空指標異常,除數為0的算數異常ArithmeticException等等,這種異常是運行時發生,無法預先捕捉處理的。 Error也是unchecked exception,也是無法預先處理的。

二、例外的處理 

程式碼中的例外處理其實是可檢查例外的處理。

1. 透過try...catch語句區塊來處理:

try
{
   // 程序代码
}catch(ExceptionName e1)
{
   //Catch 块
}
登入後複製

Catch 語句包含要擷取例外類型的宣告。當保護程式碼區塊中發生一個異常時,try 後面的 catch 區塊就會被檢查。

如果發生的例外包含在 catch 區塊中,則異常會被傳遞到該 catch 區塊,這和傳遞一個參數到方法是一樣。

2. 另外,也可以在具體位置不處理,直接拋出,通過throws/throw到上層再進行處理,具體的,如果一個方法沒有捕獲到一個檢查性異常,那麼該方法必須使用throws 關鍵字來聲明。

throws 關鍵字放在方法簽章的尾部。也可以使用 throw 關鍵字拋出一個異常,無論它是新實例化的還是剛捕獲到的。

下面方法的宣告會拋出一個 RemoteException 例外:

import java.io.*;
public class className
{
  public void deposit(double amount) throws RemoteException
  {
    // Method implementation
    throw new RemoteException();
  }
  //Remainder of class definition
}
登入後複製

3. finally關鍵字

finally 關鍵字用來建立在 try 程式碼區塊後面執行的程式碼區塊。無論是否發生異常,finally 程式碼區塊中的程式碼總是會被執行。在 finally 程式碼區塊中,可以執行清理類型等收尾善後性質的語句。

finally 程式碼區塊出現在 catch 程式碼區塊最後,語法如下:

try{
  // 程序代码
}catch(异常类型1 异常的变量名1){
  // 程序代码
}catch(异常类型2 异常的变量名2){
  // 程序代码
}finally{
  // 程序代码
}
登入後複製

java相關文章教學推薦:java入門程式

#

以上是java中異常類型及異常處理的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板