天天看點

異常基礎

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 捕獲異常問題總結:

  1. 代碼中從異常發生位置開始,之後的代碼都不在運作
  2. 代碼中有多個異常,可以使用多個catch塊進行捕獲操作,分門别類處理
  3. 目前情況下,隻能展示異常情況,後期可以講異常情況做成log日志檔案
  4. 異常被捕獲之後代碼可以正常運作。

3.3 抛出異常

throw

在方法内抛出異常

throws

在【方法聲明】位置,告知調用者目前方法有哪些異常抛出

聲明的異常需要生成對應的文檔注釋

3.4 抛出異常總結:

  1. 一個代碼塊内,有且隻能抛出一個異常
  2. 從throw位置開始,之後的代碼不在運作
  3. 代碼中存在使用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結尾!!!