一個小失誤導致我catch了,但是沒catch住,究竟是什麼原因呢?讓我們一起看看吧
import java.io.IOException;
import java.io.InputStream;
public class FinallyCarryOrNot {
public static void main(String[] args) {
System.out.println("我在main裏面,是否會輸出異常後的返回值???val = "+test());
}
public static String test(){
InputStream in = System.in;
try {
int read = in.read();
System.out.println("讀取了:"+read);
int i = 1/0;
} catch (IOException e) {
System.err.println("異常xxxx");//catch裏的內容居然沒有輸出???很神奇啊
//throw new RuntimeException(e);
}/*finally{
System.out.println("異常了我會輸出嗎?");
}*/
return "我丟!!!";
}
}
輸出一直都是下面這個東西
最後我發現我居然用IO異常去catch了算術異常,結果導致catch失效,修改後就可以正確執行了。這引發我們思考,我們是否需要在每個地方都catch一下?因爲我們無法知道這個地方到底拋不拋異常,會不會漏catch?