2009年2月17日 星期二

第131題

Given:
11. static void test() throws Error{
12. if(true) throw new AssertionError();
13. System.out.print("test ");
14. }
15. public static void main(String[] args){
16. try{test();}
17. catch(Exception ex){System.out.print("exception ");}
18. System.out.print("end ");
19. }
What is the result?
A. end
B. Compilation fails.
C. exception end
D. exception test end
E. A Throwable is thrown by main.
F. An Exception is thrown by main.
答案:E
參考:9-2 Java例外事件與處理機制

---------------------------------------------------

16行呼叫test() 之後,
12. 會產生一個 AssertionError();
由第11行 throw Error 拋回給main();

但是17的 Exception 無法處理, 原因 Exception跟Error沒有繼承關係.
所產的Error是一個throwable物件 由main()拋出.

沒有留言:

張貼留言