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 een AutoClosable in een try-with-resource een exception gooien, wordt de exceptie uit de close() 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)
}
  1. Er is geen referentie naar de FileInputStream dus die kan niet automatisch geclosed worden


« Vorige module Volgende module »