day21 異常

1.異常

  • 運行時出現(xiàn)異常
  • throwable所有異常超類。兩個子類:error(問題嚴(yán)重,不用),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()錯誤信息最全,控制臺打印信息默認(rèn)使用此方法

7.自定義異常類

public class SelfRuntimeException extends RuntimeException {

    public SelfRuntimeException() {
        super();
        
    }

    public SelfRuntimeException(String message) {
        super(message);
加super可以使子類中message顯示在控制臺
        
    }

}
一般使用繼承RuntimeException ,代碼簡單
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,625評論 18 399
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,241評論 0 62
  • 一:java概述:1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,800評論 0 11
  • 異常:現(xiàn)實生活的病現(xiàn)實生活中萬物在發(fā)展和變化會出現(xiàn)各種各樣不正常的現(xiàn)象。1:例如:人的成長過程中會生病。|——病|...
    多了去的YangXuLei閱讀 1,075評論 0 6
  • 今天1號了,又是新的一月。 想念你
    Glenna閱讀 293評論 0 0

友情鏈接更多精彩內(nèi)容