Java異常管理是通過try、catch螃概、throw边坤、throws、finally進(jìn)行管理谅年。
try 和 catch類似于“一夫多妻制”茧痒,一個try代碼塊的聲明,必須和(一個或多個catch)或finally塊相對應(yīng)融蹂。
catch的作用域被限制在"丈夫"聲明的語句塊中旺订,catch也管不了其他try語句拋出的異常,就是自家的事情還管不了超燃,沒空管別人家的区拳。例外情況是在try中嵌套聲明try-catch。
// try1
try {
// 丈夫1
try{
// try子塊
} catch (Ex e) {
//子媳婦
}
} catch (Ex e) {
//小媳婦
} catch (Ex e) {
//正房
}
//try2
try {
//丈夫2
} finally {
}
try1塊有兩個媳婦(小媳婦和正房意乓,她們不會管try2的異常樱调,但是會管try子塊的異常)。小媳婦為正房的子類届良,必須聲明在正房之前笆凌,否則會報(bào)已經(jīng)被捕獲的錯誤。
finally塊除了在異常發(fā)生之前使用System.exit(0);手動停止程序 和 未進(jìn)入try塊的情況士葫,都會執(zhí)行乞而。在try中使用 return;return sth; finally塊都會執(zhí)行。慢显。并且在finally中使用return sth;如果基本數(shù)據(jù)類型爪模,則覆蓋返回;若是引用數(shù)據(jù)類型則修改堆中對象的值返回荚藻,這也很好說明了Java只有值傳遞屋灌。
- JDK7對異常添加了新的語法糖
- 帶資源的try-catch。也就是說我們不用再手動的處理finally關(guān)閉資源或連接了应狱。但是共郭,too young too simple,還是乖乖用顯示的關(guān)閉吧,雖然建議是用帶資源的try-catch.
- 多重捕獲侦香。catch 可以用 | 連接落塑,捕獲多個異常。
異常有罪罐韩,且用且珍惜憾赁。不應(yīng)當(dāng)把異常處理機(jī)制作為流程處理機(jī)制來用