JAVA之Exception篇(2) 效能

2021-09-01 19:28:14 字數 1196 閱讀 9191

public class performance 

public long newobject()

long time = (system.nanotime() - l);

system.out.println("建立物件:" + time);

return time;

} public long newexception()

long time = (system.nanotime() - l);

system.out.println("建立異常物件:" + time);

return time;

} public long newsubexception()

long time = (system.nanotime() - l);

system.out.println("\n建立nullpointerexception異常的子類物件:" + time);

return time;

} public long catchexception() catch (exception e)

} long time = (system.nanotime() - l);

system.out.println("建立、丟擲並接住異常物件:" + time);

return time;

} public static void main(string args)

}

建立物件:7394974

建立異常物件:206183309

建立、丟擲並接住異常物件:249589489

丟擲並接住異常物件:43406180

建立異常物件所用時間是建立物件的27倍

建立nullpointerexception異常的子類物件:206053708

建立exception物件所用時間是建立子類異常nullpointerexception物件的1

結論:

建立異常物件花費的時間比建立非異常物件要多得多,所以非異常情況不要使用異常。(由於是為異常情況設計的,所以jvm沒有考慮效能問題)

丟擲exception異常跟丟擲其子類異常成本一樣,只是如果丟擲頂層類exception,呼叫方無法清楚知道錯誤在**,所以建議不要直接丟擲或接住exception類。

Java中Exception和Error的區別

error類和exception類的父類都是throwable類,他們的區別是 error類一般是指與虛擬機器相關的問題,如系統崩潰,虛擬機器錯誤,記憶體空間不足,方法呼叫棧溢等。對於這類錯誤的導致的應用程式中斷,僅靠程式本身無法恢復和和預防,遇到這樣的錯誤,建議讓程式終止。exception類表示...

Java基礎 03異常Exception

編譯 checked 異常 指的是,在編譯的時候,jvm就檢查 的正確性,從而丟擲編譯時就已能發現的異常 執行 unchecked 異常 指的是,在執行的過程中有可能丟擲的異常,我們自定義異常時都是繼承runtimeexception 都是繼承runtimeexception的。之所以自定義業務異常...

Java之列舉篇

出處 1 為什麼要出現列舉 在現實生活中,有許多實體有且僅有特定的幾個屬性 例如 月份只有1 12月,性別只有男女,季節只有四季 等 若將其型別定義成常量,則不可避免地出現非法引數的問題 例如 13月,第三個性別,第五個季節 等 因此,對於上述型別的物件,必須規定其特定的屬性值為列舉型別,即 僅能從...