Java異常結構

來源:互聯網
上載者:User

標籤:技術   種類   使用者   src   spring事務   指標   cat   相關   算術運算   

Java異常機制

 

異常是程式運行過程中出現的錯誤。本文主要講授的是Java語言的異常處理。Java語言的異常處理架構,是Java語言健壯性的一個重要體現。

Java把異常當作對象來處理,並定義一個基類java.lang.Throwable作為所有異常的超類。在Java API中已經定義了許多異常類,這些異常類分為兩大類,錯誤Error和異常Exception。Java異常體繫結構呈樹狀,其階層圖:

 

 

1、Thorwable類

Thorwable類所有異常和錯誤的超類,有兩個子類Error和Exception,分別表示錯誤和異常。其中異常類Exception又分為運行時異常(RuntimeException)和非運行時異常,這兩種異常有很大的區別,也稱之為不檢查異常(Unchecked Exception)和檢查異常(Checked Exception)。

 
2.Error(錯誤):

一般是指java虛擬機器相關的問題,如系統崩潰、虛擬機器出錯誤、動態連結失敗等,這種錯誤無法恢複或不可能捕獲,將導致應用程式中斷,通常應用程式無法處理這些錯誤,因此應用程式不應該捕獲Error對象,也無須在其throws子句中聲明該方法拋出任何Error或其子類。

3.Exception:

Exception類及其子類是Throwable的一種形式,它指出了合理的應用程式想要捕獲的條件

(1)SQLException:該異常提供關於資料庫訪問錯誤或其他錯誤的資訊。

(2)RuntimeException 是那些可能在 JAVA 虛擬機器正常運行期間拋出的異常的超類

(3)IOException:此類為異常的通用類,它是由失敗的或中斷的 I/O 操作產生的。

 
4、運行時異常和非運行時異常

(1)運行時異常都是RuntimeException類及其子類異常,如NullPointerException、IndexOutOfBoundsException等,這些異常是不檢查異常,程式中可以選擇捕獲處理,也可以不處理。這些異常一般是由程式邏輯錯誤引起的,程式應該從邏輯角度儘可能避免這類異常的發生。

(2)非運行時異常是RuntimeException以外的異常,類型上都屬於Exception類及其子類。從程式文法角度講是必須進行處理的異常,如果不處理,程式就不能編譯通過。如IOException、SQLException等以及使用者自訂的Exception異常,一般情況下不自訂檢查異常。

(3)Spring事務預設只對運行時異常RuntimeException進行復原

 

5、異常的捕獲和處理

Java異常的捕獲和處理是一個不容易把握的事情,如果處理不當,不但會讓程式碼的可讀性大大降低,而且導致系統效能低下,甚至引發一些難以發現的錯。

Java異常處理涉及到五個關鍵字,分別是:try、catch、finally、throw、throws。下面將驟一介紹,通過認識這五個關鍵字,掌握基本異常處理知識。

  (1)、try:它裡面放置可能引發異常的代碼

  (2)、catch:後面對應異常類型和一個代碼塊,用於表明該catch塊用於處理這種類型的代碼塊,可以有多個catch塊。

  (3)、finally:主要用於回收在try塊裡開啟的物力資源(如資料庫連接、網路連接和磁碟檔案),異常機制總是保證finally塊總是被執行。只有finally塊,執行完成之後,才會回來執行try或者catch塊中的return或者throw語句,如果finally中使用了return或者throw等終止方法的語句,則就不會跳回執行,直接停止。

  (4)、throw:用於拋出一個實際的異常,可以單獨作為語句使用,拋出一個具體的異常對象。

  (5)、throws:用在方法簽名中,用於聲明該方法可能拋出的異常,可拋出多個異常類型。

 

 

6、throw與throws關鍵字的區別

(1)throw關鍵字是用於方法體內部,用來拋出一個Throwable類型的異常。如果拋出了檢查異常,則還應該在方法頭部聲明方法可能拋出的異常類型。該 方法的調用者也必須檢查處理拋出的異常。如果所有方法都層層上拋擷取的異常,最終JVM會進行處理,處理也很簡單,就是列印異常訊息和堆棧資訊。如果拋出 的是Error或RuntimeException,則該方法的調用者可選擇處理該異常。

 

(2)throws關鍵字用於方法體外部的方法聲明部分,用來聲明方法可能會拋出某些異常。僅當拋出了檢查異常,該方法的調用者才必須處理或者重新拋出該異常。當方法的調用者無力處理該異常的時候,應該繼續拋出,而不是囫圇吞棗一般在catch塊中列印一下堆棧資訊做個勉強處理。

下面給出一個簡單例子:

 

 

常見的RuntimeException

 

NullPointerException- null 指標引用異常
ClassCastException - 類型強制轉換異常。
IllegalArgumentException - 傳遞非法參數異常。
ArithmeticException - 算術運算異常
ArrayStoreException - 向數組中存放與宣告類型不相容對象異常
IndexOutOfBoundsException - 下標越界異常
NegativeArraySizeException - 建立一個大小為負數的數組錯誤異常
NumberFormatException - 數字格式異常
SecurityException - 安全異常
UnsupportedOperationException - 不支援的操作異常

原文:http://blog.csdn.net/qq_27093465/article/details/52268531

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.