【本節目标】
通過閱讀本節内容,你将進一步掌握異常處理的相關方法,并能夠做到準确地捕獲異常與抛出異常。同時,也能了解到RuntimeException的相關資訊。
異常處理的标準格式
現在已經學習完成了大部分的異常處理格式:try、catch、finally、throw、throws,那麼這些關鍵字在實際的開發之中往往會一起進行使用。下面通過一個具體的程式進行分析。
現在要求定義一個實作除法計算的方法,在這個方法之中開發要求如下:
- 在進行數學計算開始與結束的時候進行資訊提示;
- 如果在進行計算的過程之中産生了異常,則要交給調用處進行處理。
class MyMath {
//異常交給調用處處理則一定要在方法上使用throws
public static int div(int x , int y) throws Exception {
int temp = 0 ;
System.out.println("***【START】除法計算開始。");
try {
temp = x / y ;
}catch (Exception e){
throw e ; //向上抛異常對象
}finally{
System.out.println("***【END】除法計算結束。");
}
return temp ;
}
}
public class JavaDemo {
public static void main(String args[]) {
try {
System.out.println(MyMath.div(10,0)) ;
}catch (Exception e) {
e.printStackTrace() ;
}
}
}

圖一 異常處理結果
對于此類操作實際上可以簡化省略catch、throw的操作
class MyMath {
//異常交給調用處處理則一定要在方法上使用throws
public static int div(int x , int y) throws Exception {
int temp = 0 ;
System.out.println("***【START】網絡資源連接配接。");
try {
temp = x / y ;
}finally{
System.out.println("***【END】網絡連接配接關閉。");
}
return temp ;
}
}
public class JavaDemo {
public static void main(String args[]) {
try {
System.out.println(MyMath.div(10,0)) ;
}catch (Exception e) {
e.printStackTrace() ;
}
}
}
圖二 異常處理格式
在以後實際開發過程之中,這種異常的處理格式是最為重要的,尤其是當與一些資源進行通路操作的時候尤其重要。
RuntimeException
通過之前的分析可以發現隻要方法後面帶有throws往往都是告訴使用者本方法可能産生的異常是什麼,是以這個時候來觀察一段代碼。
public class JavaDemo {
public static void main(String args[]) {
int num = Integer.parseInt("123") ;
System.out.println(num) ; //123
}
}
打開Integer類中的parseInt()方法的定義來觀察:
public static int parseInt(String s) throws NumberFormatException
這個方法上明确的抛出了一個異常,但是在處理的時候并沒有強制性要求處理。觀察一下NumberFormatException類的繼承結構,同時也觀察一下數學異常類的繼承結構:
ArithmeticException: | NumberFormatException: |
---|---|
java.lang.Object java.lang.Throwable java.lang.Exception java.lang.RuntimeException java.lang.ArithmeticException | java.lang.IllegalArgumentException java.lang.NumberFormatException |
如果現在所有的程式執行上隻要使用了throws定義的方法都必須要求開發者進行手工處理,那麼這個代碼的編寫就過于麻煩了。是以在設計的過程之中考慮到代碼編寫的友善,是以提供有一個靈活的可選的異常處理父類“RuntimeException”,這個異常類的子類可以不需要強制性處理。
面試題:請解釋RuntimeException與Exception的差別?請列舉出幾個常見的RuntimeException。
- RuntimeException是Excception的子類;
- RuntimeException标注的異常可以不需要進行強制性處理,而Exception異常必須強制性處理;
- 常見的RuntimeException異常類型: NumberFormatException、 ClassCastException、 NullPointerException;
想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。
本内容視訊來源于
阿裡雲大學 下一篇:教你如何自定義“異常” | 帶你學《Java面向對象程式設計》之八十一 更多Java面向對象程式設計文章檢視此處