3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
異常是程序運行過程中出現的錯誤。本文主要講授的是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異常,一般情況下不自定義檢查異常。 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等終止方法的語句,則就不會跳回執行,直接停止。 finally執行過程: (4)、throw:用於拋出一個實際的異常,可以單獨作為語句使用,拋出一個具體的異常對象。 (5)、throws:用在方法簽名中,用於聲明該方法可能拋出的異常。 6、throw與throws關鍵字的區別(1)throw關鍵字是用於方法體內部,用來拋出一個Throwable類型的異常。如果拋出了檢查異常,則還應該在方法頭部聲明方法可能拋出的異常類型。該 方法的調用者也必須檢查處理拋出的異常。如果所有方法都層層上拋獲取的異常,最終JVM會進行處理,處理也很簡單,就是列印異常消息和堆棧信息。如果拋出 的是Error或RuntimeException,則該方法的調用者可選擇處理該異常。 (2)throws關鍵字用於方法體外部的方法聲明部分,用來聲明方法可能會拋出某些異常。僅當拋出了檢查異常,該方法的調用者才必須處理或者重新拋出該異常。當方法的調用者無力處理該異常的時候,應該繼續拋出,而不是囫圇吞棗一般在catch塊中列印一下堆棧信息做個勉強處理。 下面給出一個簡單例子:常見的RuntimeExceptionNullPointerException- 空指針引用異常 ClassCastException - 類型強制轉換異常。 IllegalArgumentException - 傳遞非法參數異常。 ArithmeticException - 算術運算異常 ArrayStoreException - 向數組中存放與聲明類型不兼容對象異常 IndexOutOfBoundsException - 下標越界異常 NegativeArraySizeException - 創建一個大小為負數的數組錯誤異常 NumberFormatException - 數字格式異常 SecurityException - 安全異常 UnsupportedOperationException - 不支持的操作異常

本文由yidianzixun提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦