Da efficace Java 2e di Joshua Bloch,
An example of the sort of situation where it might be appropriate to ignore an exception is when closing a FileInputStream. You haven’t changed the state of the file, so there’s no need to perform any recovery action, and you’ve already read the information that you need from the file, so there’s no reason to abort the operation in progress. Even in this case, it is wise to log the exception, so that you can investigate the matter if these exceptions happen often.
È saggio ignorare sempre quell'eccezione, come suggerito. Il codice sarebbe quindi,
FileInputStream stream = null;
try {
stream = new FileInputStream("foo.txt");
// do stuff
} finally {
if (null != stream) {
try {
stream.close();
} catch (IOException e) {
LOG.error("Error closing file. Ignoring this exception.", e);
}
}
che è molto più dettagliato di
try (FileInputStream stream = new FileInputStream("foo.txt")) {
// do stuff
}
Ma la verbosità extra vale la pena ignorare l'eccezione dalla chiusura del file? È meglio ignorare l'eccezione poiché non c'è niente da fare? Lo stesso approccio dovrebbe essere utilizzato con risorse diverse da un file, come una connessione al database?