自定義異常 執行時期和編譯時期的區別

2021-09-13 21:50:59 字數 1762 閱讀 6306

1.自定義異常一: 繼承runtmeexcepyion,即執行期間異常;

由於我們自定義的是執行期間的異常,我們丟擲異常,程式始終不作處理,程式編譯的時候不會報錯,但是執行的時候會報錯,因此會中斷程式.

2.自定義異常一: 繼承excepyion,即編譯期間異常;

跟上面相反,丟擲異常,必須要處理,不然不會通過編譯過程,我們可以用trycatch(exption e),或者throws往上一級拋.

注意: 下面有上面兩種情況的例子

1.自定義異常一: 繼承runtmeexcepyion,即執行期間異常;

public class nolifevalueexption extends runtimeexception 

public nolifevalueexption(string message)

}

定義乙個person類,人的生命不能為負數,在setlifevalue判斷是否異常

public class person 

public person(string name, int lifevalue)

// 4.提供setter和getter方法

public string getname()

public void setname(string name)

public int getlifevalue()

// 5.在setlifevalue方法裡面判斷是否異常(生命值不能為負數),

public void setlifevalue(int lifevalue)

this.lifevalue = lifevalue;//沒有異常在賦值

}}

定義測試類:

由於我們自定義的是執行期間的異常,所以程式編譯的時候不會報錯

public class demo

}

2.自定義異常二: 繼承excepyion,即編譯期間異常;

public class nolifevalueexption extends exception 

public nolifevalueexption(string message)

}

定義乙個person類,人的生命不能為負數,在setlifevalue判斷是否異常

public class person 

public person(string name, int lifevalue)

// 4.提供setter和getter方法

public string getname()

public void setname(string name)

public int getlifevalue()

// 5.在setlifevalue方法裡面判斷是否異常(生命值不能為負數),編譯異常我們要往上拋或處理

public void setlifevalue(int lifevalue) throws exption

this.lifevalue = lifevalue;//沒有異常在賦值

}}

定義測試類:

public class democatch (nolifevalueexption e)

system.out.println("程式執行完畢");

}}

執行時期異常

runtimeexception和他的所有子類異常,都屬於執行時期異常。nullpointerexception,arrayindexoutofbound ception等都屬於執行時期異常.執行時期異常的特點 1 方法中丟擲執行時期異常,方法定義中無需throws宣告,呼叫者也無需處理此異常 2 ...

java執行時異常和非執行時異常的區別

建議使用執行時異常和編譯時異常叫法,便於區分和理解 非執行時異常是什麼異常?很懵逼 編譯時異常 程式沒有通過編譯器的編譯,必須處理掉這個異常程式才能正常執行,比如檔案路徑找不到異常,類找不到異常,io異常,必須用try catch或是throwable處理掉才能編譯通過 可以理解為一種特殊的語法錯誤...

oracle自定義函式的執行時間

oracle中的pl sql 會涉及到兩個執行引擎,乙個專門處理標準的sql語句,另外乙個處理pl sql的過程 一般在引擎切換上會帶來cpu額外的開銷。比如foreach迴圈語句和普通for迴圈的區別,就是foreach消除了引擎切換,一直駐留在執行標準sql的引擎中,從而縮短了執行時間。現在有乙...