如果没有捕获,嵌套尝试是否有任何用途?

从一本 Java 书籍中发现了以下代码


public void writeFile(String fileName, String content){

    File file = new File(fileName);


    try {

        try (PrintWriter output = new PrintWriter(new FileWriter(file))) {

          output.println(content);

          output.println();

          output.println("End of writing");

        }

        System.out.println("File been written successfully");

    } catch (IOException ex) {

      ex.printStackTrace(System.out);

    }

}


上面的代码没有任何问题,我根本看不出嵌套try没有定义内部 catch 块的意义。或者这样做有什么我错过的目的吗?


修改后的代码:


public void writeFile(String fileName, String content){

    File file = new File(fileName);


    try (PrintWriter output = new PrintWriter(new FileWriter(file))) {

        output.println(content);

        output.println();

        output.println("End of writing");

        System.out.println("File been written successfully");

    } catch (IOException ex) {

      ex.printStackTrace(System.out);

    }

}


慕斯王
浏览 72回答 1
1回答

大话西游666

内部 try 是 try-with-resources:try (PrintWriter output = new PrintWriter(new FileWriter(file)))这意味着,它管理资源 -PrintWriter在执行此尝试中的每个语句后打开它并关闭它。外部尝试用于捕获错误。Petter Friberg 提出的修改后的代码是等效的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java