司法三等申論題
115年
[檢察事務官電子資訊組] 程式語言
第 二 題
📖 題組:
二、請回答以下關於 Java 程式語言的例外處理(Exception Handling)問題。
二、請回答以下關於 Java 程式語言的例外處理(Exception Handling)問題。
📝 此題為申論題,共 3 小題
小題 (二)
(二)根據圖 2-1 所示的 Java 程式碼,寫出執行 main()方法後的完整輸出結果。(5 分)
public class Test {
static int parse(String text) {
try {
return Integer.parseInt(text);
}
catch (NumberFormatException e) {
return -1;
}
finally {
System.out.print("F");
}
}
public static void main(String[] args) {
System.out.println(parse("12"));
System.out.println(parse("abc"));
}
}
圖 2-1
public class Test {
static int parse(String text) {
try {
return Integer.parseInt(text);
}
catch (NumberFormatException e) {
return -1;
}
finally {
System.out.print("F");
}
}
public static void main(String[] args) {
System.out.println(parse("12"));
System.out.println(parse("abc"));
}
}
圖 2-1
思路引導 VIP
📋 事實梳理:方法 parse 中,有 try-catch-finally 區塊。try 中有 return,catch 中也有 return,而 finally 內有 System.out.print("F")。
🔍 爭點辨識:如果在 try 裡面已經執行了 return,finally 還會不會執行?印出的順序是什麼?
小題 (一)
(一)請說明 Java 語言中 checked exception 與 unchecked exception 的差異,並各舉一個 Java 內建的例外類別作為範例。(10 分)
思路引導 VIP
📋 事實梳理:Java 的例外體系中,分為兩種處理態度:一種是編譯器強迫你要處理,一種是不強迫。 🔍 爭點辨識:這兩種例外分別對應什麼名稱?它們在繼承結構上又有什麼差異?
小題 (三)
(三)假設有一個類別 Calculator 包含圖 2-2 所示的靜態方法,請撰寫一個 JUnit 5 測試類別,驗證下列三項行為。(10 分)
divide(10, 2)應得到 5。
divide(10, 0)應拋出 IllegalArgumentException。
例外訊息應為"division by zero"。
public static int divide(int a, int b) {
if (b == 0) {
throw new IllegalArgumentException("division by zero");
}
return a / b;
}
圖 2-2
divide(10, 2)應得到 5。
divide(10, 0)應拋出 IllegalArgumentException。
例外訊息應為"division by zero"。
public static int divide(int a, int b) {
if (b == 0) {
throw new IllegalArgumentException("division by zero");
}
return a / b;
}
圖 2-2
思路引導 VIP
📋 事實梳理:撰寫 JUnit 5 測試,需要驗證正常回傳值,以及驗證拋出特定例外及特定訊息。 🔍 爭點辨識:JUnit 5 中,驗證相等用什麼方法?驗證拋出例外用什麼方法?