【发布时间】:2014-08-07 19:11:30
【问题描述】:
从 Java 7 开始,Closeable 接口已被改造以扩展 AutoCloseable 接口,以便所有实现 Closeable 接口的类都可以使用 try-with-resources 语句。到目前为止,Closeable 接口可以随意抛出任何异常,包括 InterrruptedException。
但是,对于 Java 7,在退出 try 块后自动调用 close 方法时,try-with-resources 语句中使用的 Closeable 接口的任何实例都可能抛出 InterruptedException,并且其 InterruptedException 可能会被隐式调用 Throwable.addSuppressed(InterruptedException); 抑制
考虑到有人可能会在不知不觉中抑制其异常并且程序没有按应有的方式运行,这是否违反了 Java 的向后兼容性规则
【问题讨论】:
-
Closeable不能随意抛出 any 异常。它将IOException声明为其可抛出对象。
标签: java java-7 try-with-resources autocloseable