什么是圆括号/圆括号()在Java中尝试捕获

2022-08-31 12:24:34

据我所知,我们使用如下:try catch

try {
   //Some code that may generate exception
}
catch(Exception ex) {
}
   //handle exception
finally {
   //close any open resources etc.
}

但是在我发现以下代码中

try(
    ByteArrayOutputStream byteArrayStreamResponse  = new ByteArrayOutputStream();                   
    HSLFSlideShow   pptSlideShow = new HSLFSlideShow(
                                      new HSLFSlideShowImpl(
 Thread.currentThread().getContextClassLoader()
       .getResourceAsStream(Constants.PPT_TEMPLATE_FILE_NAME)
                                     ));
 ){
}
catch (Exception ex) {
       //handel exception
}
finally {
      //close any open resource
}

我无法理解为什么在尝试后这个括号。()

它有什么用?它是 Java 1.7 中的新功能吗?我可以在那里写什么样的语法?

也请给我参考一些API文档。


答案 1

尝试使用java 1.7中新增的资源语法。它用于声明所有可以关闭的资源。这是官方文档的链接。https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br =
               new BufferedReader(new FileReader(path))) {
    return br.readLine();
}
}

在此示例中,在 try-with-resources 语句中声明的资源是 BufferedReader。声明语句显示在 try 关键字后面的括号内。在 Java SE 7 及更高版本中,BufferedReader 类实现了 java.lang.AutoCloseable 接口。由于 BufferedReader 实例是在 try-with-resource 语句中声明的,因此无论 try 语句是正常完成还是突然完成(由于方法 BufferedReader.readLine 引发 IOException),它都将关闭。


答案 2

推荐