ProgrammatieBackend Java ontwikkelaar

Wat zijn uitzonderingen (exceptions) in Java? Verklaar het verschil tussen checked en unchecked exceptions en wanneer je welke categorie moet gebruiken.

Slaag voor sollicitatiegesprekken met de Hintsage AI-assistent

Antwoord

Uitzonderingen (exceptions) zijn een mechanisme voor het omgaan met fouten in Java. Elk object dat wordt opgegooid is een afgeleide klasse van Throwable. Er zijn twee hoofdcategorieën:

  • Checked exceptions (afstammelingen van Exception, behalve RuntimeException): moeten expliciet worden afgehandeld of gedeclareerd in de methodehandtekening met throws.
  • Unchecked exceptions (afstammelingen van RuntimeException): hoeven niet expliciet te worden afgehandeld, kunnen op elke plek optreden (bijvoorbeeld, NullPointerException).

Wanneer te gebruiken?

  • Checked — voor verwachte fouten die kunnen worden afgehandeld (bijvoorbeeld, bestanden, netwerkfouten).
  • Unchecked — voor fouten die wijzen op programmeerfouten (bijvoorbeeld, een onjuist index van een array).
Voorbeeld code
public void readFile(String path) throws IOException { // Checked exception — vereist afhandeling Files.readAllLines(Paths.get(path)); } public void divide(int a, int b) { int c = a / b; // Unchecked — ArithmeticException }

Vraag met een valstrik

Kan een methode die geen throws verklaart, een checked exception gooien?

Antwoord: Nee, de compiler staat niet toe dat checked exception wordt gegooid zonder het te verklaren in de methodehandtekening (throws). Maar unchecked exception kan zonder waarschuwing worden gegooid.

void foo() { throw new IOException(); // Compilatiefout }

Voorbeelden van echte fouten door gebrek aan kennis van de details van het onderwerp


Verhaal

In een internetbank besloot de opdrachtgever de afhandeling van SQLExceptions te negeren door gebruik te maken van unchecked wrappers. Hierdoor leidde een driverupdate tot onzichtbare fouten die gegevenssynchronisatie veroorzaakten.


Verhaal

In de loggingapplicatie bleef het logbestand geblokkeerd door een niet-afgevangen checked exception (FileNotFoundException), die "verloren" was geraakt in de oproepketen, de fout werd niet op tijd afgehandeld, en de applicatie kon niet meer naar de logs schrijven.


Verhaal

In het handelsplatform implementeerde het team een globale catch(Throwable) om "nooit te crashen". Hierdoor werden kritieke unchecked exceptions gemaskeerd — de applicatie bleef werken in een inconsistente toestand, wat leidde tot ingewikkelde bugs en dataverlies.