4、java.lang.ClassNotFoundException
我们留意一下这个办法和上一个办法的差别,下一小我可能习惯更好一点,及早的封闭reader。然则往旧事与愿违,因为在reader.close()以前异常随时可能产生,如许的代码构造不克不及预防任何异常的出现。因为法度榜样会在异常出现的处所彪炳,后面的代码不克不及履行(这在膳绫擎应经用实例证实过)。这时我们就可以用try…finally来改革:
- public void readFile() {
- BufferedReader reader = null;
- try {
- try {
- reader = new BufferedReader(new InputStreamReader(new FileInputStream("file")));
- // do some other work
- // close reader
- } finally {
- reader.close();
- }
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
及早的封闭资本是一种优胜的行动,因为时光越长你忘记封闭的可能性越大年夜。如许在合营上try…finally就包管万无一掉了(不要嫌麻烦,java就是这么中规中矩)。
再说一种情况,假如我想在构造办法中打开一个文件或者创建一个JDBC连接,因为我们要在其他的办法中应用这个资本,所以不克不及在构造办法中及早的将这个资本封闭。那我们是不是就没辙了呢?谜底是否定的。看一下下面的例子:
- public class Rethrow {
- public static void readFile(String file) throws FileNotFoundException {
- try {
- BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- System.err.println("不知道若何处理该异常或者根本不想处理它,然则不做处理又不合适,这是从新抛出异常交给上一级处理");
- //从新抛出异常
- throw e;
- }
- }
- public static void printFile(String file) {
- try {
- readFile(file);
- } catch (FileNotFoundException e) {
推荐阅读
《经计揭捉?人》揭橥封面文┞仿称,数据已经代替石油成为当当代界最有价值的资本,而面对这一新的变更,反垄断监管者也应当改变思维。以下为原文内容:特斯拉收集的无人驾驶汽车数据越多>>>详细阅读
本文标题:深入探讨Java中的异常与错误处理
地址:http://www.17bianji.com/lsqh/35144.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示