【发布时间】:2011-10-13 18:25:30
【问题描述】:
static String readFirstLineFromFileWithFinallyBlock(String path) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
if (br != null) br.close();
}
}
如果方法 readLine 和 close 都抛出异常,则方法 readFirstLineFromFileWithFinallyBlock 抛出从 finally 块抛出的异常;从 try 块抛出的异常被抑制。为什么会有这样的行为?为什么 try 块的异常被抑制了?
【问题讨论】:
-
因为 JLS 是这么说的。将
close()放在另一个try-catch中,您在其中忽略或仅记录异常。 -
第一个异常会作为原因添加到第二个吗?
标签: java