Exceptiepropagatie
Veeg om het menu te tonen
Wanneer een Java-programma wordt uitgevoerd, kunnen uitzonderingen worden opgegooid vanuit diep binnen een reeks methode-aanroepen.
Exception propagation is het proces waarbij een uitzondering omhoog beweegt in de aanroepstack totdat deze wordt opgevangen door een overeenkomend catch-blok of, indien niet afgehandeld, het programma beëindigt.
Het sleutelwoord throws wordt gebruikt in methodeverklaringen om aan te geven dat een methode een of meer gecontroleerde uitzonderingen kan opwerpen. Dit betekent dat de methode de uitzondering niet zelf afhandelt, maar de verantwoordelijkheid voor afhandeling doorgeeft aan de aanroepende methoden.
Als een methode een uitzondering niet opvangt met een try-catch-blok, wordt de uitzondering doorgegeven aan de aanroepende methode. Dit proces gaat door in de keten van methode-aanroepen. Als geen van de methoden in de aanroepstack de uitzondering afhandelt, bereikt deze uiteindelijk de Java Virtual Machine (JVM), die het programma beëindigt en een stacktrace afdrukt. Dit mechanisme maakt het mogelijk om exception handling te centraliseren op een hoger niveau in de applicatie, in plaats van elke mogelijke uitzondering direct op de plaats van optreden af te handelen.
Main.java
1234567891011121314151617181920package com.example; import java.io.IOException; public class Main { public static void main(String[] args) { try { readFile(); System.out.println("File read successfully."); } catch (IOException e) { System.out.println("Caught exception: " + e.getMessage()); } } // This method declares that it throws IOException public static void readFile() throws IOException { // Simulate an error when reading a file throw new IOException("Unable to read file."); } }
In het bovenstaande programma verklaart de methode readFile dat deze een IOException kan genereren met behulp van het throws-sleutelwoord. Wanneer readFile wordt aangeroepen vanuit main, wordt de uitzondering niet door de methode zelf afgehandeld. In plaats daarvan, als er een IOException optreedt, wordt deze doorgegeven aan de main-methode. De main-methode bevat een try-catch-blok dat de IOException opvangt en afhandelt door een bericht af te drukken.
Dit toont aan hoe de uitzondering zich verplaatst vanaf het punt waar deze wordt gegooid, door de aanroepstack, totdat deze uiteindelijk wordt opgevangen en afgehandeld door een geschikt catch-blok. Als de main-methode de uitzondering niet zou opvangen, zou deze verder propaganderen en zou de JVM het programma beëindigen na het afdrukken van de stacktrace.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.