示例代码:
class TestCharStream {
public static void main(String[] args){
// Assume specified file is not available in the location
try (Reader reader = new FileReader("C:\\TestData\\test123.txt")) {
System.out.println("Entered Try block");
int content;
while ((content = reader.read()) != -1) {
System.out.print((char) content);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
由于文件不可用,会抛出'FileNotFoundException',资源初始化失败。
从 Java SE7 规范中,我了解以下与“尝试资源”语句相关的要点
如果一个资源初始化失败(即它的初始化表达式抛出一个异常),那么到目前为止由 try-with-resources 语句初始化的所有资源都将被关闭。
资源仅在初始化为非空值时才关闭。
如果 try 块和 try-with-resources 语句都抛出异常,则该方法抛出 try 块中抛出的异常;从 try-with-resources 语句抛出的异常被抑制。
我有关于关闭资源、抑制与上述点相关的异常的问题
1) 上面的示例代码情况(即资源初始化失败)是否不属于..resource 将被关闭的情况,无论try 语句是正常完成还是突然完成。这是否仅适用于在 try with resources 语句中成功初始化的资源并且 try 块中存在错误?
2) 如果在初始化资源时抛出异常(如示例),则属于初始化不成功的情况。在这种情况下,我们如何遇到 try-with-resources 语句中抛出异常的场景(基本上只能在初始化期间发生)?是关闭资源时抛出的异常吗?
杨魅力
鸿蒙传说
MYYA
相关分类