1 代碼中的異常
Throwable類
Java中是以異常的超類,在Java中所有的異常,錯誤的基類就是Throwable類。
Throwable
–| Exception 異常 可以處理,代碼還有拯救的可能性
–| Error 錯誤 GG思密達
Throwable常用方法:
Constructor:
Throwable(); Throwable構造方法,Throwable類對象中,存儲的異常或者
錯誤資訊為null
Throwable(String message); Throwable構造方法,Throwable類對象
中,存儲的異常或者錯誤資訊為message
Method:
String getMessage(); 擷取Throwable對象中存儲的異常或者錯誤資訊
String toString(); 傳回目前異常或者錯誤的簡要描述
void printStackTrace(); 展示錯誤的前因後果,【紅色字型】
2. Exception和Error差別
Exception 異常,可以處置
Error 錯誤,不可以處置,隻能避免
3. 異常處理
3.1 捕獲異常
try - catch 結構
try - catch - finally 結構
格式:
try {
// 有可能出現異常代碼
} catch (/* 對應處理的異常對象 */) {
// 處理方式
}
3.2 捕獲異常問題總結:
- 代碼中從異常發生位置開始,之後的代碼都不在運作
- 代碼中有多個異常,可以使用多個catch塊進行捕獲操作,分門别類處理
- 目前情況下,隻能展示異常情況,後期可以講異常情況做成log日志檔案
- 異常被捕獲之後代碼可以正常運作。
3.3 抛出異常
throw
在方法内抛出異常
throws
在【方法聲明】位置,告知調用者目前方法有哪些異常抛出
聲明的異常需要生成對應的文檔注釋
3.4 抛出異常總結:
- 一個代碼塊内,有且隻能抛出一個異常
- 從throw位置開始,之後的代碼不在運作
- 代碼中存在使用throw抛出異常,在方法的聲明位置必須告知調用者這裡有什麼異常
3.5 抛出和捕獲的對比
捕獲之後,代碼可以正常運作,要保證處理之後的異常不會在導緻其他問題。
例如:
使用者名密碼錯誤,不能采用捕獲異常。
使用者指定路徑問題,也不能采用捕獲異常。
抛出的确可以解決很多問題,并且可以讓代碼健壯性很強。到使用者層面說什麼都不能抛出異常。
所謂不能抛出,是指不能講錯誤資訊直接甩到使用者臉上。
使用者密碼錯誤情況:
1. 捕獲異常
2. 通過異常處理 catch将錯誤抛出
3. 給予使用者的友好提示
3.6 RuntimeException
運作時異常:
JVM在運作的過程中可以非檢查異常
例如:
ArrayIndexOutOfBoundException
NullPointerException
StringIndexOutOfBoundException
ArithmeticException
這些異常在代碼中如果出現,不需要代碼中強制進行捕獲或者抛出處理。
複制
3.7 自定義異常
代碼運作的過程中存在一定的生活化
例如:
使用者名密碼錯誤
NoGirlFriendException 沒有女朋友異常
自定義異常格式:
class 自定義異常類名 extends Exception {
// No Fields Constructor
// String Field Constructor
}
自定義異常類名:
必須Exception結尾!!!