1.異常
- 運行時出現(xiàn)異常
- throwable所有異常超類五芝。兩個子類:error(問題嚴重谐丢,不用)揭蜒,exception(經(jīng)常使用淘衙,輕量級錯誤)
- 產(chǎn)生過程
int[] a={0.1}
int[3];
jvm檢測出異常:
1.創(chuàng)建異常對象
2.拋出給方法調(diào)用者(main)
一旦異常拋出就不會執(zhí)行其后所有程序
main接收到異常传藏,如果沒有處理(try...catch)則會交給jvm
3.jvm接收到異常:將異常紅色輸出控制臺,并將程序結(jié)束
2.throw關(guān)鍵字
- 傳參時必須考慮參數(shù)是否合法
public static void main(String[] args)
(此處如果沒有try也需要寫 throws Exception) {
try {
int[] a = { 0, 1 };
} catch (Exception e) {
e.printStackTrace();
}
}
public static void text(int[] a) throws Exception{
if(a==null)
{
throw new Exception("數(shù)組空");
}
System.out.println(a[5]);
}
此為手動拋出數(shù)組
throw對象必須是異常類彤守,普通類不可
3.try..catch
try {
int[] a = { 0, 1 };
} catch (Exception e) {
e.printStackTrace();
}final
{
}
catch(需要寫方法中的異常類)捕獲異常
異程赫欤可以寫多個逗號隔開,有幾個異常類寫幾個catch
異常類書寫有順序遗增,平級無順序叫惊,如果是屬于繼承關(guān)系需要先寫子類
因為先寫父類則子類就會沒有作用(多態(tài))
final必須執(zhí)行可以不寫final(除開catch執(zhí)行System.exit(0)終止程序)
final可用于釋放資源
有catch就說異常被處理,程序會繼續(xù)執(zhí)行
ctrl+t繼承樹
- 不建議經(jīng)常在main中加throws做修,太多會終止程序
4.編譯異常和運行異常
- 僅有runitimeexception和其子類是運行異常霍狰,其余均是編譯異常
- 方法在聲明上不需要寫throws,也不需要寫try處理因為有運行異常就停止程序
5.子類重寫父類異常
- 類中可以寫多個類饰及,但只有一個可以public來修飾
- 父類有方法拋出異常子類重寫可以寫異常也可以不寫一異常
- 子類重寫拋出異常不能是平級也不能大于父類異常
- 父類不拋出異常子類也不能拋出異常蔗坯,若子類重寫方法中調(diào)用有拋出異常方法則必須try來處理
6.throwable類中方法
try {
int[] a = { 0, 1 };
} catch (Exception e) {
e.printStackTrace();
}
- string getMessage()打印創(chuàng)建拋出異常時候自定義的錯誤信息
- string tostring()打印在getMessage基礎(chǔ)上的異常類所屬包
- void printStackTrace()錯誤信息最全,控制臺打印信息默認使用此方法
7.自定義異常類
public class SelfRuntimeException extends RuntimeException {
public SelfRuntimeException() {
super();
}
public SelfRuntimeException(String message) {
super(message);
加super可以使子類中message顯示在控制臺
}
}
一般使用繼承RuntimeException 燎含,代碼簡單