農會 資訊管理類程式設計105 年第 10 題單選題
根據下列的Java語言程式碼,請問輸出結果為何?
```java
public class HelloWorld{
public static void main(String []args) {
int x = 5, y = 0;
try {
System.out.println("a");
int result=x/y;
System.out.println("b");
} catch (Exception e) {
System.out.println("c");
} finally {
System.out.println("d");
}
}
}
```
Aa c
Ba b c
Ca b c d
Da c d正確答案
D正確答案
Java的try-catch-finally機制中,try內發生例外會中斷後續程式碼,跳至catch處理,最後必定執行finally區塊。
為什麼答案是 D
印出a後發生除以0例外,跳至catch印c,最後執行finally印d,正確順序為acd。
考點:finally必執行考點:例外中斷點考點:完整執行流程
載入中…
完整詳解
Pro · 無限重點 Java的try-catch-finally機制中,try內發生例外會中斷後續程式碼,跳至catch處理,最後必定執行finally區塊。
看到y=0且x/y立刻判定丟擲例外!try中斷於b之前不印b,進catch印c,最後finally必印d,秒選acd。
逐選項分析
Afinally必執行✕
漏掉finally區塊的輸出,finally無論是否發生例外都必定會執行,不可省略。
B例外中斷點✕ 陷阱
誤以為b會執行,但x/y除以0會立刻丟擲例外,中斷try區塊,不會印出b。
C例外中斷點✕ 陷阱
發生例外後try區塊剩餘程式碼不會執行,因此不會印出b,選項包含了錯誤的b。
D完整執行流程✓ 正確
印出a後發生除以0例外,跳至catch印c,最後執行finally印d,正確順序為acd。
try-catch-finally 執行流程
| 區塊 | 觸發條件 | 執行特性 |
|---|
| try | 程式進入時 | 若發生例外,立刻中斷並跳離 |
| catch | try發生對應例外 | 接收並處理例外物件 |
| finally | try/catch執行完畢後 | 無論有無例外,必定執行 |
考生常忽略「例外發生點即為中斷點」,誤以為try區塊內的程式碼會全數執行完畢。記住:一旦丟擲例外,該行之後的try程式碼直接作廢,不會執行!