Studiewijzer module 06
Exceptions and Assertions
Closable en Autoclosable
Closable-
void close() throws IOException Autoclosable-
void close() throws Exception
De close wordt in het geval van een try-with-resource aangeroepen in het 'magische' finally-block. Dit zorgt voor een verschil in de afhandeling ten opzicht van Closable:
-
Als zowel de try als de handmatige
close()een exception gooien, wordt de exceptie uit de try gesuppressed. -
Als zowel de try als de
close()van eenAutoClosablein een try-with-resource een exception gooien, wordt de exceptie uit declose()gesuppressed.
Binnen de try met auto closables, moet iedere constructor die een exception kan gooien, los gedefinieerd worden, omdat er een referentie naar het autocloseable object nodig is om deze te kunnen closen. Dus niet:
try(InputStream i = new ObjectInputStream(new FileInputStream())) { // (1)
}
-
Er is geen referentie naar de
FileInputStreamdus die kan niet automatisch geclosed worden
« Vorige module Volgende module »