1. 程式人生 > 實用技巧 >痞子衡嵌入式:解鎖i.MXRTxxx上FlexSPI模組自帶的地址重對映(Remap)功能

痞子衡嵌入式:解鎖i.MXRTxxx上FlexSPI模組自帶的地址重對映(Remap)功能

java.lang.Throwable:類是 Java 語言中所有錯誤或異常的超類。
Exception:編譯期異常,進行編譯(寫程式碼)java程式出現的問題
RuntimeException:執行期異常,java程式執行過程中出現的問題
異常就相當於程式得了一個小毛病(感冒,發燒),把異常處理掉,程式可以繼續執行(吃點藥,繼續革命工作)
Error:錯誤
錯誤就相當於程式得了一個無法治癒的毛病(非典,艾滋).必須修改原始碼,程式才能繼續執行
異常的產生過程解析(分析異常的怎麼產生的,如何處理異常)
JVM接收到異常物件,1.把異常物件(內容原因位置)以紅色的字型打印出來在控制檯2.JVM會終止當前正在執行的JAVA程式-->中斷處理
java異常處理的五個關鍵字:try,catch,finally,throw,throws
throw關鍵字
作用:
可以使用throw關鍵字在指定的方法中丟擲指定的異常
使用格式:
throw new xxxException("異常產生的原因");
注意:
1.throw關鍵字必須寫在方法的內部
2.throw關鍵字後邊new的物件必須是Exception或者Exception的子類物件
3.throw關鍵字丟擲指定的異常物件,我們就必須處理這個異常物件
throw關鍵字後邊建立的是RuntimeException或者是 RuntimeException的子類物件,我們可以不處理,預設交給JVM處理(列印異常物件,中斷程式)
throw關鍵字後邊建立的是編譯異常(寫程式碼的時候報錯),我們就必須處理這個異常,要麼throws,要麼try...catch

Obects類中的靜態方法
public static <T> T requireNonNull(T obj):檢視指定引用物件不是null
throws關鍵字:異常處理的第一種方式,交給別人處理
作用:
當方法內部丟擲異常物件的時候,那麼我們就必須處理這個異常物件
可以使用throws關鍵字處理異常物件,會把異常物件宣告丟擲給方法的呼叫者處理(自己不處理,給別人處理),最終交給JVM處理-->中斷處理
使用格式:在方法宣告時使用
修飾符 返回值型別 方法名(引數列表) throws AAAExcepiton,BBBExcepiton...{
throw new AAAExcepiton("產生原因");
throw new BBBExcepiton("產生原因");
...
}
注意:
1.throws關鍵字必須寫在方法宣告處
2.throws關鍵字後邊宣告的異常必須是Exception或者是Exception的子類
3.方法內部如果丟擲了多個異常物件,那麼throws後邊必須也宣告多個異常
##如果丟擲的多個異常物件有子父類關係,那麼直接宣告父類異常即可
4.呼叫了一個宣告丟擲異常的方法,我們就必須的處理宣告的異常
要麼繼續使用throws宣告丟擲,交給方法的呼叫者處理,最終交給JVM
要麼try...catch自己處理異常


try...catch:異常處理的第二種方式,自己處理異常
格式:
try{
可能產生異常的程式碼
}catch(定義一個異常的變數,用來接收try中丟擲的異常物件){
異常的處理邏輯,異常異常物件之後,怎麼處理異常物件
一般在工作中,會把異常的資訊記錄到一個日誌中
}
...
catch(異常類名 變數名){

}
finally{
無論是否出現異常都會執行
}
注意:
1.finally不能單獨使用,必須和try一起使用
2.finally一般用於資源釋放(資源回收),無論程式是否出現異常,最後都要資源釋放(IO)

注意:
1.try中可能會丟擲多個異常物件,那麼就可以使用多個catch來處理這些異常物件
2.如果try中產生了異常,那麼就會執行catch中的異常處理邏輯,執行完畢catch中的處理邏輯,繼續執行try...catch之後的程式碼
如果try中沒有產生異常,那麼就不會執行catch中異常的處理邏輯,執行完try中的程式碼,繼續執行try...catch之後的程式碼
Throwable類中定義了3個異常處理的方法
String getMessage() 返回此 throwable 的簡短描述。
String toString() 返回此 throwable 的詳細訊息字串。
void printStackTrace() JVM列印異常物件,預設此方法,列印的異常資訊是最全面的

多個異常使用捕獲又該如何處理呢?
1. 多個異常分別處理。
2. 多個異常一次捕獲,多次處理。
一個try多個catch注意事項:
catch裡邊定義的異常變數,如果有子父類關係,那麼子類的異常變數必須寫在上邊,否則就會報錯
ArrayIndexOutOfBoundsException extends IndexOutOfBoundsException

## try中可能產生的異常物件,ArrayIndexOutOfBoundsException IndexOutOfBoundsException
try中如果拿了異常物件,會把異常物件丟擲給catch處理,丟擲的異常物件,會從上到下的一次賦值給catch中定義的異常變數

3. 多個異常一次捕獲一次處理。

子父類的異常:
- 如果父類丟擲了多個異常,子類重寫父類方法時,丟擲和父類相同的異常或者是父類異常的子類或者不丟擲異常。
- 父類方法沒有丟擲異常,子類重寫父類該方法時也不可丟擲異常。此時子類產生該異常,只能捕獲處理,不能宣告丟擲
注意:
父類異常是什麼樣,子類異常就什麼樣
自定義異常類:
java提供的異常類,不夠我們使用,需要自己定義一些異常類
格式:
public class XXXExcepiton extends Exception | RuntimeException{
新增一個空引數的構造方法
新增一個帶異常資訊的構造方法
}
注意:
1.自定義異常類一般都是以Exception結尾,說明該類是一個異常類
2.自定義異常類,必須的繼承Exception或者RuntimeException
繼承Exception:那麼自定義的異常類就是一個編譯期異常,如果方法內部丟擲了編譯期異常,就必須處理這個異常,要麼throws,要麼try...catch
繼承RuntimeException:那麼自定義的異常類就是一個執行期異常,無需處理,交給虛擬機器處理(中斷處理)