java12章_从零开始学Java 第12章 异常处理
第12章? 異常處理
世界上沒有完美的事情,一個完善的程序不可能總是會準確無誤的運行,它們的運行流程都是在開發人員所預料的范圍之內。但是,實際卻不盡人意。在程序的運行過程中可能會因為各種原因而導致出現錯誤,例如用戶的誤操作,各種環境原因等。Java為此提供了異常處理機制。通過這套機制就可以將容錯率提高。本章就主要介紹Java的異常處理機制。
12.1? 異常
Java中的異常處理是提前給出程序中有可能會出現的異常,這樣就可以通過這種容錯機制使程序可以繼續正常運行。本小節就主要介紹異常出現的原因、異常的分類。
12.1.1? 什么是異常
異常就是在程序運行過程中所出現的不正常現象。例如在做除法運算時,0是不能被除的,這樣的事情小學的時候就知道,同樣,計算機就會通過異常來將這個信息傳出,以此進行說明。
Java中的異常可以通過關鍵字進行控制,主要有try、catch、throw、throws和finally五個。
try:使用在程序中有可能會出現不正常的地方,此時可以使用try將可能出現異常的代碼段包圍起來,如果try語句塊中出現異常,那么這個異常就會被拋出。
catch:是用來捕獲異常,并在這個語句塊中對該異常進行處理,例如輸出說明語句等。
finally:則是不管發生還是不發生異常,都需要執行。
throw:用來動手引發一個異常。
throws:定義熱河被調用方法的異常。
12.1.2? 異常出現的原因
在程序正常運行過程中,假如出現了異常,作為一個穩健的程序來說或,首先需要將程序切換到另一個安全的狀態,并且需要允許用戶可以進行其他的操作;其次是提示用戶程序出錯的原因,然后保存數據并終止程序。一個程序,至少要做到以上兩點之一。
12.1.2? 異常出現的原因
如果需要在程序中處理異常情況,就需要確切的知道異常時由何種原因造成的,一般情況下,導致異常出現有以下幾種:
1.用戶輸入錯誤:用戶在需要填入數據的時候,將不符合要求的數據進行添加。例如需要輸入一個整型的數據,而用戶卻輸入了一個字符串類型的數據。此時就應當提示用戶輸入的格式錯誤,并返回界面重新輸入。
2.代碼本身錯誤:進行數據運算時,數據的長度引起的錯誤,或者是數組越界、算法錯誤、空引用等問題
3.環境因素:磁盤空間或者內存不足所引起的錯誤。
異常的出現多種多樣,在具體處理異常的時候,應該要判斷異常,針對于不同的異常類型采取不同的處理措施。
12.1.2? 異常的分類
Java中的異常體系非常龐大,所有的異常最終都是繼承自Throwable接口。可以將異常分為運行時的異常和已經檢查的異常。Java中主要有三種異常,也就是Throwable中的三個基本子類。
Error:定義Java運行時的內部錯誤以及資源耗盡錯誤。表示很難恢復的錯誤,例如內存越界。一般不期望用戶來進行處理。
RuntimeException:用來表示設計或者實現方面的問題,例如數組越界、類型轉換錯誤、去訪問一個沒有初始化的對象。在出現這個錯誤的時候,一般不需要處理,運行的時候,環境會輸出一條信息語句,提示用戶修正錯誤。
其他異常:表示是運行的時候因環境因素影響可能發生并可以被處理的問題。例如查找不到文件或者是一個不完整的路徑等。因為用戶的錯誤很可能就會導致這類問題的發生。
12.2? 處理異常
在出現異常的時候,可以直接捕獲處理,也可以先不對它進行處理而是把它拋給上面的調用者。本節主要介紹try/catch捕獲異常、throws聲明異常、throw拋出異常、自定義異常等諸多的內容。
12.2.1? 獲取異常信息
進行異常處理的時候,可能會將拋出異常的代碼放置到try塊中,然后創建一個catch語句塊,catch語句塊中有一個異常類型和一個代表這個類型的對象引用。如果給書被拋出的異常匹配之后,catch塊中的語句就會被執行。
12.2.2? 異常聲明
異常聲明就是指一個方法不處理它所產生的異常,而是調用層次向上傳遞,誰調用的這個方法,這個異常就由誰來進行處理。
12.2.3? 拋出異常
Throw語句用在具體方法中拋出異常,它的語法格式如下:
throw exception;
在以上的語句中,throw是關鍵字,用于拋出異常。參數exception則是表示要拋出的異常對象,該對象應該是throwable類的子類,而且只能夠是一個。
12.2.4? 異常鏈
兩個或者是多個不同的異常出現在同一個程序中,并且會發生嵌套拋出就是異常鏈,異常鏈是一個比較抽象的概念。
12.3? 定義自己的異常
前面介紹了一些Java本身自帶的一些異常,但是在某些特定的情況下,還需要自己去創建一個異常類型,創建異常類型只需要繼承Throwable類或者是它的子類Exception就可以了。本節中就主要介紹一下如何使用自己定義的異常類。
12.3.1? 創建自己的異常類
異常的創建非常簡單,只需要繼承Exception,并實現一些方法就可以了。創建異常的一般形式如語法:
class 類名 extends Exception
{
//類體
}
12.3.1? 創建自己的異常類
Throwable主要的方法如下:
public Throwable fillInStackTrace():該方法的作用就是返回一個包含有完全堆棧追蹤的Throwable對象,這個對象可以被再次拋出。
返回包含一個完全堆棧追蹤的Throwable對象,這個對象可以被再次拋出。
public Throwable getCause():返回此throwable對象的cause;如果cause不存在或未知,則返回 null。
public String getMessage():返回此throwable對象的詳細消息字符串。
public void printStackTrace():將異常堆棧追蹤輸出到標準錯誤流。
public void printStackTrace(PrintStream?s):將此throwable對象及其追蹤輸出到指定的輸出流。
public void printStackTrace(PrintWriter?s):將此throwable對象及其追蹤輸出到指定的 PrintWriter。
public String toString():返回一個包含異常描述的String對象。
12.3.2? 使用自己的異常類
上一小節介紹了如何創建自己的異常類,這以小節將講解如何使用自己創建的異常類。首先定義了一個異常類IllegalAgeException。AgeTest類則是對年齡進行分類的程序,對各個年齡段的成績分為不同的名稱。其中需要考慮的是,年齡是有范圍的,一般在0-100歲之間。當然其中也有一些壽星,所以在此規定年齡超過120則認為是超出范圍,則會拋出相應的異常,也就是IllegalAgeException。然后使用該異常進行處理。
12.4? 小結
在本章中首先介紹了什么是異常,介紹了Java異常機制的基本體系結構。然后又介紹了Java中異常機制的使用,又對自定義異常類進行了簡單講解。正確的處理各類異常是非常復雜的事情,讀者應該在程序編寫過程中細細體會才能熟練的掌握,本章只是對Java異常機制的簡單介紹,還希望讀者能在實踐中學習,加深對Java異常機制的認識。
總結
以上是生活随笔為你收集整理的java12章_从零开始学Java 第12章 异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关机qq显示什么状态
- 下一篇: 坦克汽车发布川西试驾事故说明:操作不当所