更新時(shí)間:2023年10月25日10時(shí)14分 來(lái)源:傳智教育 瀏覽次數(shù):
在Java中,當(dāng)在catch塊中使用return語(yǔ)句時(shí),finally塊仍然會(huì)執(zhí)行。無(wú)論是否有異常拋出,finally塊都會(huì)在catch塊中的return語(yǔ)句之后執(zhí)行。這是Java語(yǔ)言規(guī)范所定義的行為。
接下來(lái)筆者用一個(gè)示例來(lái)說(shuō)明這一點(diǎn):
public class FinallyExample { public static void main(String[] args) { System.out.println(divide(10, 2)); System.out.println(divide(10, 0)); } public static int divide(int numerator, int denominator) { try { int result = numerator / denominator; return result; // 在這里使用return語(yǔ)句 } catch (ArithmeticException e) { System.err.println("發(fā)生了除以零的異常: " + e.getMessage()); return -1; } finally { System.out.println("finally塊執(zhí)行"); } } }
在這個(gè)示例中,divide方法用于執(zhí)行除法操作。如果沒(méi)有異常拋出,try塊中的計(jì)算會(huì)得出結(jié)果,并在catch塊中的return語(yǔ)句之前返回結(jié)果。無(wú)論是否發(fā)生異常,finally塊中的語(yǔ)句都會(huì)執(zhí)行。
示例的輸出將是:
5 發(fā)生了除以零的異常: / by zero finally塊執(zhí)行 -1 finally塊執(zhí)行
正如我們可以看到,finally塊在每次調(diào)用divide方法時(shí)都會(huì)執(zhí)行,即使在異常情況下也是如此。這確保了資源的釋放或其他清理操作可以在方法退出之前完成。
北京校區(qū)