文档说
但是,在本例中,如果方法
readLine和close都抛出异常,那么方法readFirstLineFromFileWithFinallyBlock将抛出从finally块抛出的异常;从try块抛出的异常将被抑制。相反,在示例try中,如果从块和语句**引发异常,则readFirstLineFromFile方法将抛出从try块抛出的异常;从trywith资源块抛出的异常将被抑制。在Java 7和更高版本中,您可以检索被抑制的异常;有关更多信息,请参阅“抑制异常”一节。
我不明白大胆的部分
如果从
trytry**-with-resources块和语句引发异常,则为**.
如何从带有资源的try语句和try块中抛出异常?如果从带有资源的try语句引发异常,则意味着资源初始化失败。在这种情况下,永远不会执行try块。因此,前面的语句不可能发生。
我一定误解了这个文档和try与资源的工作方式。您能提供实际发生粗体语句的例子吗?
上述方法
static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br =
new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}static String readFirstLineFromFileWithFinallyBlock(String path)
throws IOException {
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
if (br != null) br.close();
}
}发布于 2020-08-12 18:03:16
如何从try -语句和try块引发异常?如果从try-with语句引发异常,则意味着资源初始化失败。
try-with语句不仅初始化而且关闭资源,关闭可能引发异常。
这句话是在描述了在使用“最后一次尝试”时类似的情况之后出现的,并将其与“使用资源”进行了比较。
https://stackoverflow.com/questions/63382197
复制相似问题