我們處理異常還可以使用try…catch…finally語(yǔ)句,當(dāng)程序執(zhí)行到錯(cuò)誤代碼的地方,系統(tǒng)會(huì)拋出一個(gè)異常對(duì)象,程序轉(zhuǎn)入catch塊進(jìn)行逐個(gè)匹配,如果匹配成功,程序則執(zhí)行catch代碼,如果匹配失敗,程序則還給Java虛擬機(jī)處理。
try…catch…finally語(yǔ)句的格式如下: try { //包含可能發(fā)生異常的語(yǔ)句 } catch(異常類名 異常對(duì)象) { //異常處理的代碼 } finally { //一定執(zhí)行的代碼 }
注意事項(xiàng):
1)try塊代碼盡量越少越好。
2)一旦try塊代碼中出現(xiàn)異常,無(wú)論try塊后面有多少行代碼,都不會(huì)被執(zhí)行。
3)catch塊中異常參數(shù)匹配同樣滿足多態(tài)Exception e = new ArithmeticException("/by zero");
4)try塊只能夠有一個(gè),catch塊可以有多個(gè),try可以和catch組合,try可以和finally組合,try可以和catch和finally組合。
5)一般會(huì)把Exception作為catch的參數(shù)類型放在異常處理格式的最后。
6)Execption作為父類異常參數(shù)只能夠出現(xiàn)在異常的最后面,先子類后父類。
7)finally修飾的代碼塊一定會(huì)被執(zhí)行,除非在執(zhí)行到finally之前程序異常退出或者調(diào)用了系統(tǒng)退出的方法。
8)在try語(yǔ)句中,在執(zhí)行return語(yǔ)句時(shí),要返回的結(jié)果已經(jīng)準(zhǔn)備好了,就在此時(shí),程序轉(zhuǎn)到finally執(zhí)行了。在轉(zhuǎn)去之前,try中先把要返回的結(jié)果存放到不同于x的局部變量中去,執(zhí)行完finally之后,在從中取出返回結(jié)果,因此,即使finally中對(duì)變量x進(jìn)行了改變,但是不會(huì)影響返回結(jié)果,應(yīng)該使用棧保存返回值。
C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語(yǔ)言學(xué)練課程
解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語(yǔ)法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程