java中CheckException和UnCheckException的區別

在java中,異常分爲兩種,運行時異常(也就是uncheckException)和已檢查異常checkException,運行時異常包括平常遇到的各種異常,如空指針異常,數據格式異常等一系列異常,這種異常是可以不捕獲的,可通過throws拋出異常,交給別的代碼或者JAVA虛擬機來完成。但是checkException是必須要處理的,也就是不能拋出,必須通過try-catch來完成,不處理的話是不能進行編譯的。但是checkException不是一個具體的異常類型,它只是一個概念。所以你判斷一個異常是已檢查異常還是未檢查異常,只需要通過拋出這個異常就可以知道了。
   
當程序出現異常的時候,虛擬機會幫忙產生一個異常對象...以下的類都是JDK提供的...
Java <wbr><wbr>check <wbr><wbr>exception <wbr><wbr>& <wbr><wbr>uncheck <wbr><wbr>exception
其中RuntimeException +Error 和其子類都是屬於 uncheckexception
Exception類中除了 RuntimeException之外的類 都是屬於 checkexception
 
 java中CheckException和UnCheckException的區別

如圖可以看出,User類的setAge方法拋出的是一個運行時RuntimeException,在方法後面不需要顯式的throws,在客戶類調用時,也不需要try/catch捕獲處理。
而CheckUser類的setAge方法則是拋出一個Exception(屬於checkException),在setAge方法後面需要顯式的拋出異常,或者是在Exception定義後面顯示的用try/catch來捕獲並處理,在客戶類調用時,也需要顯式的用try/catch捕獲處理,如果不處理的話就需要顯示在客戶類調用其CheckUser對象的方法後面顯式的拋出該異常,交由上級客戶類捕獲或者繼續向上拋出。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章