【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?

发布了25 篇原创文章 · 获赞 3 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_34291570/article/details/104716706