標籤:運行時 err col eui ora www. 應該 ati check
1: Unchecked Exception( 也就是運行時異常) VS Check Exception(非運行時異常)
2: 運行期異常 VS 非運行期異常?
非運行時異常: 必須在代碼中顯示的聲明捕獲也就是放在try{}catch(){}塊中,或者在方法上申明throws 來拋出異常,類型上都屬於Exception類及其子類。
運行時異常:不需要特意的申明,一般運行時異常都是虛擬機器出現問題了才會報,比如你寫個死迴圈導致記憶體不足什麼的, 運行時異常都是RuntimeException類及其子類,如 NullPointerExcetpion、IndexOutOfBoundsExcrtiption等,程式可以不捕獲。一般是由邏輯引起的,要盡量避免。
RuntimeException類是Exception類的子類,它叫做運行時異常,Java中的所有運行時異常都會直接或者間接地繼承自RuntimeException類。
Java中凡是繼承自Exception,而不繼承自RuntimeException類的異常都是非運行時異常。
3: 什麼是異常丟失?
拋出異常後處理異常的code又拋出新異常,則舊異常丟失。
4: 異常處理兩種方式?
用try {} catch{} finally {} 捕獲處理; 函數後面throws Excepltion,拋出異常,函數內部throw new Exception()。
5: 如何自訂異常?
繼承Exception或其子類(比如RuntimeException)。
6: try語句塊中有return, 會執行finally嗎? 如果執行try{} 之前有return, finally會執行嗎?
try中有return, 也會首先執行finally中的代碼; 如果是Sytem.exit(0),就不執行finally;
如果在try之前有return, finally 是不會被執行的。
7: catch中的異常匹配?
基類會捕獲衍生類別異常。catch的時候,會先匹配衍生類別的,然後是基類的。
8: Throwable, Error, Exception, RuntimeException的區別?
(1)Throwable類是 Java 語言中所有錯誤或異常的超類。它的兩個子類是Error和Exception;
(2)Error是Throwable 的子類,用於指示合理的應用程式不應該試圖捕獲的嚴重問題。大多數這樣的錯誤都是異常條件;
(3)Exception類及其子類是 Throwable 的一種形式,它指出了合理的應用程式想要捕獲的條件;
(4)RuntimeException是那些可能在 JAVA 虛擬機器正常運行期間拋出的異常的超類。
可能在執行方法期間拋出但未被捕獲的RuntimeException 的任何子類都無需在 throws 子句中進行聲明。它是Exception的子類;
java基礎知識學習 java異常