在使用MyEclipse程式設計時,我發現一個問題:如下代碼,當出現異常時,有時候會先執行catch裡的語句,而有時候會先執行finally裡的語句:
public class Calc {
public int divide(int a, int b) throws Exception {
if (b == 0) {
throw new Exception("出現錯誤:被除數和除數必須是整數,除數不能為零。");
}
return a / b;
}
}
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Calc c = new Calc();
System.out.print("請輸入被除數:");
int a = sc.nextInt();
System.out.print("請輸入除數:");
int b = sc.nextInt();
try {
System.out.println(c.divide(a, b));
} catch (Exception e) {
System.err.println(e.getMessage());
} finally {
System.out.println("感謝使用本程式!");
}
}
}
此例先執行了finally後面語句的内容:
而這一次先執行了catch裡面的内容:
後來我把程式拿出來放在CMD指令行中運作,試了很多遍,都是先執行的catch,也就是從上到下順序執行,不知道是不是MyEclipse的問題。(其他的版本我不清楚,我用的是2014版)