3
考慮這個問題,有人問我,在接受採訪時當catch塊和finally塊在Java中拋出異常時會發生什麼?
public class Test_finally {
private static int run(int input) {
int result = 0;
try {
result = 3/input;
} catch (Exception e) {
System.out.println("UnsupportedOperationException");
throw new UnsupportedOperationException("first");
} finally {
System.out.println("finally input=" + input);
if (0 == input) {
System.out.println("ArithmeticException");
throw new ArithmeticException("second");
}
}
System.out.println("end of method");
return result * 2;
}
public static void main(String[] args) {
int output = Test_finally.run(0);
System.out.println(" output=" + output);
}
}
這個節目的輸出拋出ArithmeticException
不UnsupportedOperationException
記者簡單地問我將如何讓客戶知道提出的原始異常是UnsupportedOperationException
型不ArithmeticException
的。 我不知道
人們可能不會刻意從'finally'塊拋出,但多種因素可導致選中(和意外)例外'finally'塊內發生。 – supercat