Исключение, выходящее из close () в try-with-resource
Я читал о ресурсе try-with-resource в JDK7, и пока я думал об обновлении приложения для работы с JDK7, я столкнулся с этой проблемой ...
При использовании BufferedReader, например, запись выдает IOException, а закрытие выдает IOException .. в блоке catch меня интересует 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?
В большинстве случаев я помещал ресурс в try / catch внутри блока finally, не заботясь о его обработке.