Java 多個異常共享同一個異常處理器的方法
傳統(tǒng)的異常處理
我們先來看下,傳統(tǒng)的異常處理方式:
// not share exception handler
int[] intArray = new int[3];
try {
for (int i = 0; i <= intArray.length; i++) {
intArray[i] = i;
System.out.println("intArray[" + i + "] = " + intArray[i]);
System.out.println("intArray[" + i + "]模 " + (i - 2) + "的值: " + intArray[i] % (i - 2));
}
} catch (ArrayIndexOutOfBoundsException e) {
// ...省略了大段處理邏輯
System.out.println("異常信息:" + e);
} catch (ArithmeticException e) {
// ...省略了大段處理邏輯
System.out.println("異常信息:" + e);
}
在上面的程序處理中,我們捕獲了可能出現(xiàn)的 ArrayIndexOutOfBoundsException 和 ArithmeticException 的異常。
共享同一個異常處理器
為了改進(jìn)代碼,我們使用了 Java 7 中共享同一個異常處理器的方式,代碼改成了如下方式:
// share exception handler
intArray = new int[3];
try {
for (int i = 0; i <= intArray.length; i++) {
intArray[i] = i;
System.out.println("intArray[" + i + "] = " + intArray[i]);
System.out.println("intArray[" + i + "]模 " + (i - 2) + "的值: " + intArray[i] % (i - 2));
}
} catch (ArrayIndexOutOfBoundsException | ArithmeticException e) {
// ...省略了大段處理邏輯
System.out.println("異常信息:" + e);
}
System.out.println("程序正常結(jié)束。");
在這段程序中,我們看到 ArrayIndexOutOfBoundsException 和 ArithmeticException 異常被放到了同一個異常處理器中進(jìn)行了處理。這樣整體代碼看起來更加簡潔,并消除了很多的重復(fù)代碼。要知道,重復(fù)是魔鬼。
源碼
本例子的源碼,可以在 https://github.com/waylau/essential-java 中 com.waylau.essentialjava.exception 包下找到。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java使用poi組件導(dǎo)出Excel格式數(shù)據(jù)
這篇文章主要介紹了Java使用poi組件導(dǎo)出Excel格式數(shù)據(jù),需要的朋友可以參考下2020-02-02
關(guān)于Object中equals方法和hashCode方法判斷的分析
今天小編就為大家分享一篇關(guān)于關(guān)于Object中equals方法和hashCode方法判斷的分析,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01
java byte與base64的互轉(zhuǎn)的實(shí)現(xiàn)示例
在項目開發(fā)中經(jīng)常用到,比如前端上送文件流(byte[])到后臺并轉(zhuǎn)成文件,本文主要介紹了java byte與base64的互轉(zhuǎn)的實(shí)現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-02-02
Java利用redis zset實(shí)現(xiàn)延時任務(wù)詳解
zset作為redis的有序集合數(shù)據(jù)結(jié)構(gòu)存在,排序的依據(jù)就是score。本文就將利用zset score這個排序的這個特性,來實(shí)現(xiàn)延時任務(wù),感興趣的可以了解一下2022-08-08
springcloud項目里application.yml不加載的坑及解決
這篇文章主要介紹了springcloud項目里application.yml不加載的坑及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
BootStrap Jstree 樹形菜單的增刪改查的實(shí)現(xiàn)源碼
這篇文章主要介紹了BootStrap Jstree 樹形菜單的增刪改查的實(shí)現(xiàn)源碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-02-02

