(二)對比Exception和Error,執行時異常與一般異常的區別
阿新 • • 發佈:2018-12-11
-
Excpetion和Error都是繼承了Throwable,在java中只有Throwable型別的例項才能丟擲throw或者捕獲catch,它是異常處理機制的基本組成型別。
-
Exception:是程式正常執行情況下,可以預料的意外情況,可以並且應該被捕獲,進行相應處理。
-
Error:是指在正常情況下,不大可能出現的情況,絕大部分的error都會導致程式處於非正常的、不可恢復狀態。既然是非正常情況,所以不便於也不需要捕獲。常見的比如:OutOfMemoryError。
-
Exception:又可分為檢查異常和不檢查異常。可檢查異常在原始碼裡必須顯式的進行捕獲處理,這是編譯檢查的一部分。不檢查異常
-
常見Error:NoClassDefFoundErrir, VirtualMachineError, OutOfMemoryError, StackOverflowError
常見的Exception:IOException,RuntimeException、NullPointerException、ClassCastException、SecurityException/ClassNotFoundException
- 從效能角度分析java異常處理機制:try-catch程式碼會產生額外的效能開銷,或者它會影響jvm對程式碼進行優化,所以建議捕獲有必要的程式碼段。
- java每例項化一個Exception,都會對當時的棧進行快照,造成效能開銷變大