一、
Java 中定義了兩類異常: 另外: error 表示恢復不是不可能但很困難的情況下的一種嚴重問題。比如說內存溢出。不可能指望程序能處理這樣的情況。 exception 表示一種設計或實現問題。也就是說,它表示如果程序運行正常,從不會發生的情況 |
二、
checked exception是需要強制catch的異常,你在調用這個方法的時候,你如果不catch這個異常,那么編譯器就會報錯,比如說我們讀寫文件的時候會catch IOException,執行數據庫操作會有SQLException等
UnChecked Exception是RuntimeException,也就是說運行時的異常,這種異常不是必須需要catch的,你是無法預料的,比如說你在調用一個 list.szie()的時候,如果這個list為null,那么就會報NUllPointerException,而這個異常就是 RuntimeException,也就是UnChecked Exception
三、
Error和RuntimeException及其子類是unchecked exception.其他exception是checked exception.
checked exception可以出現在throws子句中,unchecked exception不可以。
Error是java自己的錯誤或者諸如內存耗盡等嚴重錯誤,是不可抗拒的,顯然沒有捕捉的必要,而且也沒有辦法捕捉。
RuntimeException 是你的程序有邏輯錯誤,是程序員應該積極避免其出現的異常。比如NullPointerException等,完全是程序員馬虎出的錯。當遇到這種錯誤 時,java將這個錯誤自動捕捉到,比如顯示到concole里,然后繼續運行。而checked exception如果不捕捉則會導致程序終止。
四、error和excption的區別
Error的繼承關系:
java.lang.Object
--java.lang.Throwable
--java.lang.Error
Exception的繼承關系:
java.lang.Object
--java.lang.Throwable
--java.lang.Exception
二者的不同之處:
Exception:
1.可以是可被控制(checked) 或不可控制的(unchecked)
2.表示一個由程序員導致的錯誤
3.應該在應用程序級被處理
Error:
1.總是不可控制的(unchecked)
2.經常用來用於表示系統錯誤或低層資源的錯誤
3.如何可能的話,應該在系統級被捕捉