异常来自 close() 在 try-with-resource 中
2022-09-02 22:12:40
我正在阅读有关JDK7中的资源试用的信息,当我考虑升级我的应用程序以使用JDK7运行时,我遇到了这个问题。
例如,当使用 BufferedReader 时,写入会引发 IOException,而 close 会引发 IOException。在捕获块中,我担心由写入抛出的IOException。但我不会太在乎关闭时扔掉的那个。
数据库连接也存在同样的问题。和任何其他资源..
例如,我创建了一个可自动关闭的资源:
public class AutoCloseableExample implements AutoCloseable {
public AutoCloseableExample() throws IOException{
throw new IOException();
}
@Override
public void close() throws IOException {
throw new IOException("An Exception During Close");
}
}
现在使用它时:
public class AutoCloseTest {
public static void main(String[] args) throws Exception {
try (AutoCloseableExample example = new AutoCloseableExample()) {
System.out.println(example);
throw new IOException("An Exception During Read");
} catch (Exception x) {
System.out.println(x.getMessage());
}
}
}
如何区分此类异常,而不必为 BufferedReader 等类创建包装器?
大多数情况下,我将资源关闭在最终块内的尝试/捕获中,而不太关心处理它。