作者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
1F:→ rofellosx:因为叫RuntimeException...? 03/24 22:17
3F:→ tkcn:Exception 有两种,checked & unchecked,Run..Exc..属於後者 03/24 22:48
5F:→ tkcn:刚刚跑去笨板找,结果没找到,想想不对才发现我看错字了 = = 03/25 09:20
6F:→ AmosYang: LOL XD 03/25 11:23