SCJP 1.6版考題 141

出自 陳富國維基館
於 2013年3月30日 (六) 03:15 由 Ikk (對話 | 貢獻) 所做的修訂 (新頁面: Given: 11. class A{ 12. public void process(){System.out.print("A, ");} 13. class B extends A{ 14. public void process() throws IOException{ 15. super.process(); 16. ...)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
前往: 導覽搜尋
Given:
11. class A{
12.   public void process(){System.out.print("A, ");}
13.   class B extends A{
14.   public void process() throws IOException{
15.     super.process();
16.     System.out.print("B, ");
17.     throw new IOException(),
18.   }
19. public static void main(String[] args){
20.   try{new B().process();}
21.   catch(IOException e){System.out.println("Exception");}
22. }


What is the result?
 A. Exception
 B. A, B, Exception
 C. Compilation fails because of an error in line 20.
 D. Compilation fails because of an error in line 14.
 E. A NullPointerException is thrown at runtime.

解答


Ans: D

解說:

overriding方法宣告拋出的例外必須是父類別方法中宣告拋出的例外本身或其子類別例外,詳細請參考SL-275第261頁
子類別的overriding方法不能拋出父類別overridden方法所沒有宣告拋出的例外或其例外父類別,
此題類別A的process方法沒有宣告拋出任何類別,因此子類別B的process方法不能宣告拋出IOException