作者freewhat (這就是人生嗎)
看板java
標題[問題] Exception 的問題
時間Wed Mar 24 21:25:11 2010
程式如下
import java.io.*;
class A
{
public void process()
{System.out.print("A, ");}
}
class B extends A
{
public void process() throws IOException
{
super.process();
System.out.print("B, ");
throw new IOException();
}
public static void main(String[] args)
{
try{new B().process();}
catch(IOException e){System.out.println("Exception");}
}
}
編譯會出錯,訊息為
B.java:11: process() in B cannot override process() in A; overridden method does
not throw java.io.IOException
這應該是書上說的,override method throws 的Exception 要為父類別 method
throws 的Exception 的子類別或不寫。
(不確定是不是這個原因)
我的問題是,那為什麼我把 所有的IOException都改成 RuntimeException就過了呢?
RuntimeException不需要遵守這個規定嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.43.220.48
→ rofellosx:因為叫RuntimeException...? 03/24 22:17
→ tkcn:Exception 有兩種,checked & unchecked,Run..Exc..屬於後者 03/24 22:48
→ tkcn:剛剛跑去笨板找,結果沒找到,想想不對才發現我看錯字了 = = 03/25 09:20
→ AmosYang: LOL XD 03/25 11:23