class Y {
public static void main(String[] args) throws RuntimeException{//Line 1
try {
doSomething();
}
catch (RuntimeException e) {
System.out.println(e);
}
}
static void doSomething() throws RuntimeException{ //Line 2
if (Math.random() > 0.5) throw new RuntimeException(); //Line 3
throw new IOException();//Line 4
}
}
當我拋出兩種類型的異常(IOException異常在線路4和RuntimeException的在3號線),我發現我的程序無法編譯,直到我在拋出子句線1 &指示:「IOException異常」 2.IOException異常VS的RuntimeException的Java
鑑於如果我反轉「throws」以指示拋出IOException,程序會按如下所示成功編譯。
class Y {
public static void main(String[] args) throws IOException {//Line1
try {
doSomething();
}
catch (RuntimeException e) {
System.out.println(e);
}
}
static void doSomething() throws IOException {//Line 2
if (Math.random() > 0.5) throw new RuntimeException();//Line 3
throw new IOException();//Line 4
}
}
爲什麼我總是使用「拋出」IOException,即使RuntimeException也被拋出(第3行)?
你不需要處理RuntimeException,聽起來不正確? –
有一些'RuntimeException'應該被處理,即使它們不需要被捕獲/聲明。 'NumberFormatException'是一個常見的例子。 – chrylis
@chrylis,**應該被處理,**需要**被處理實際上是一個很大的區別。 – svz