【JavaSE-Exception】爲啥我Catch了還是沒有正確的輸出

一個小失誤導致我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?

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章