Sobes.tech
Middle

Welke soort uitzondering in Java kan niet worden afgehandeld?

sobes.tech AI

Antwoord van AI

Fout.

Java deelt uitzonderingen (Throwable) in drie hoofdtypen:

  1. Checked Exceptions: Vereisen verplichte afhandeling of declaratie in de handtekening van de methode (throws).
  2. Unchecked Exceptions (Runtime Exceptions): Vereisen geen verplichte afhandeling. Duiden meestal op fouten in de logica van het programma.
  3. Fouten: Vertegenwoordigen ernstige problemen gerelateerd aan de Java virtuele machine of systeembronnen. Ze kunnen niet op applicatieniveau worden afgehandeld, omdat ze geen problemen van de eigen code zijn.

Voorbeelden van Error:

  • OutOfMemoryError: De Java virtuele machine kon geen geheugen toewijzen.
  • StackOverflowError: Er trad een stack overflow op (te diepe recursie).
  • InternalError: Interne fout van de Java Virtual Machine.

Het omgaan met Error via try-catch heeft geen zin, omdat deze fouten wijzen op toestanden waarvan de applicatie meestal niet succesvol kan herstellen. In plaats daarvan beëindigt de applicatie meestal bij een Error.

Hoewel het technisch mogelijk is om catch (Error e) te schrijven, wordt dergelijke code als slechte praktijk beschouwd en lost het het hoofdprobleem niet op.

try {
    // Code die een OutOfMemoryError kan veroorzaken
    List<Object> list = new ArrayList<>();
    while (true) {
        list.add(new Object());
    }
} catch (OutOfMemoryError e) {
    // Deze blok wordt uitgevoerd, maar je kunt niet herstellen,
    // omdat het systeem niet genoeg geheugen heeft.
    System.err.println("Geen geheugen meer! Applicatie zal waarschijnlijk beëindigen.");
    // Verdere acties hier zijn nutteloos of veroorzaken SecurityException
} catch (Exception e) {
    // Afhandeling van andere uitzonderingen
    e.printStackTrace();
}

In QA-automatisering, als er tijdens het uitvoeren van een test een Error optreedt, duidt dit eerder op een probleem met de testomgeving, een verkeerde JVM-configuratie of een ernstig defect in de applicatie zelf dat heeft geleid tot een kritieke storing, in plaats van op een verwachte, afhandelbare uitzondering. Dergelijke scenario's vereisen het onderzoeken van de onderliggende oorzaak buiten de testcode.