我在處理異常時遇到了一個方案,下面是示例代碼。我試圖理解爲什麼下面的代碼無法編譯。在重新拋出未檢查異常之前,我正在檢查異常類型。編譯器部隊處理未檢查異常的重新拋出
public class TestException {
public void test() throws FileNotFoundException {
FileReader test = new FileReader("");
}
public static void main(String[] args){
TestException test=new TestException();
try {
test.test();
} catch (Exception e) {
// TODO Auto-generated catch block
if(e instanceof ArithmeticException){
throw e;
}
else{
e.printStackTrace();
}
}
}
}
'throw e;'行拋出'Exception',雖然你知道它是'ArithmeticException'的一個實例,'e'的類型仍然是'Exception'。 –
'Exception'不是未選中狀態。 – EJP
爲什麼不是兩個單獨的catch塊? –