Par*_*osh 29 java try-catch parentheses
据我所知,我们使用try catch如下:
try {
//Some code that may generate exception
}
catch(Exception ex) {
}
//handle exception
finally {
//close any open resources etc.
}
Run Code Online (Sandbox Code Playgroud)
但在我发现的代码中
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
}
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么这个括号()在尝试之后.
它的用途是什么?它是Java 1.7中的新功能吗?我可以在那里写什么样的语法?
还请参考一些API文档.
Pra*_*kar 38
尝试使用资源语法,这是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();
}
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,try-with-resources语句中声明的资源是BufferedReader.声明语句出现在try关键字后面的括号内.Java SE 7及更高版本中的BufferedReader类实现了java.lang.AutoCloseable接口.因为BufferedReader实例是在try-with-resource语句中声明的,所以无论try语句是正常完成还是突然完成(由于BufferedReader.readLine方法抛出IOException),它都将被关闭.
| 归档时间: |
|
| 查看次数: |
8118 次 |
| 最近记录: |