stavo leggendo il try-with-risorsa in JDK7 e mentre pensavo di aggiornare la mia applicazione per l'esecuzione con JDK7 Ho affrontato questo problema ..Eccezione uscendo close() in prova-con-risorsa
Quando si utilizza un BufferedReader, ad esempio, la scrittura genera IOException e la chiusura genera IOException .. nel blocco catch, sono interessato all'IOException lanciata dalla scrittura .. ma non mi interesserebbe molto di quello lanciato dalla chiusura ..
stesso problema con le connessioni al database .. e qualsiasi altra risorsa ..
Come esempio ho creato un resou closeable automatica rce:
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");
}
}
Ora quando lo si utilizza:
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());
}
}
}
come posso distinguere tra tali eccezioni, senza dover creare wrapper per classi come BufferedReader?
La maggior parte dei casi metto la risorsa chiusa in una prova/cattura all'interno del blocco finally senza preoccuparsi troppo di gestirla.
Dov'è il codice? –
Sto parlando del concetto generale .. comunque .. Aggiungerò uno snippet di codice ora .. –