java – 为什么在捕获时使用IOexception而不是Exception?
发布时间:2020-12-15 02:50:32 所属栏目:Java 来源:网络整理
导读:我似乎无法正确地说出这一点,搜索引擎可以获得任何有意义的结果. try{ BufferedReader reader = new BufferedReader( new FileReader("foo.bar") );}catch(Exception e){ println( e.getMessage() );} 所以FileReader只抛出FileNotFoundException,据我所知它
我似乎无法正确地说出这一点,搜索引擎可以获得任何有意义的结果.
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中学习的更重要的技能不是如何捕获异常,而是如何捕获它们,而不是让它们向上传播调用堆栈,朝向异常障碍,代码中的一个常见位置,所有错误都被捕获并且统一处理(通常通过记录,回滚事务等). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |