Я читал о попытке с ресурсом в 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, не особо заботясь об его обработке.