java – 为什么在捕获时使用IOexception而不是Exception?

前端之家收集整理的这篇文章主要介绍了java – 为什么在捕获时使用IOexception而不是Exception?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我似乎无法正确地说出这一点,搜索引擎可以获得任何有意义的结果.
try{
    BufferedReader reader = new BufferedReader( new FileReader("foo.bar") );
}
catch(Exception e){
    println( e.getMessage() );
}

所以FileReader只抛出FileNotFoundException,据我所知它是一个IOException,这是一个Exception.有人可以解释为什么我会捕获FileNotFoundException或IOException,而不是只指定泛型“Exception”而不必导入异常(即import java.io.FileNotFoundException;)?它是否严格用于可读性?

我使用所有三个名字捕获了异常,我找不到区别.

编辑: – – – – – – – – – –

private BufferedReader askUserForFile(String prompt){
        BufferedReader rd = null;
        while(rd == null){
            try{
                String filename = readLine(prompt);
                rd = new BufferedReader( new FileReader(filename) );
            }
            catch(Exception e){
                println(e.getMessage());
            }
        }
        return rd;
    }

解决方法

异常是所有异常的母亲,包括所有RuntimeException子类.当你指定捕获它时,你会在网络中获得比你想要的更多的鱼,比如NullPointerExceptions,IllegalArgumentExceptions等等.

虽然在代码中的某些时候捕获通用异常是正确的,但在任何较低层捕获它几乎肯定是错误的并且可能会损害应用程序的行为.

在Java中学习的更重要的技能不是如何捕获异常,而是如何捕获它们,而不是让它们向上传调用堆栈,朝向异常障碍,代码中的一个常见位置,所有错误都被捕获并且统一处理(通常通过记录,回滚事务等).

原文链接:https://www.f2er.com/java/127963.html

猜你在找的Java相关文章