Meerdere Catch-Blokken
Veeg om het menu te tonen
Bij het werken met uitzonderingen in Java is het vaak nodig om verschillende soorten fouten die in uw code kunnen optreden, af te handelen. Meerdere catch-blokken stellen u in staat om afzonderlijk te reageren op diverse uitzonderingssoorten binnen één enkele try-catch-structuur. Door meerdere catch-blokken na een try-blok te plaatsen, kunt u unieke afhandelingslogica specificeren voor elke uitzonderingsklasse. Deze aanpak maakt uw code robuuster, omdat u specifieke problemen zoals invoerfouten, rekenfouten of null-referenties verschillend kunt behandelen, afhankelijk van de situatie.
try {
// code
} catch (Exception1) {
// exception handling 1
} catch (Exception2) {
// exception handling 2
}
De volgorde van catch-blokken is van groot belang, omdat Java elk catch-blok achtereenvolgens van boven naar beneden controleert om een overeenkomend uitzonderingsstype te vinden.
Aangezien uitzonderingen zijn georganiseerd in een hiërarchie, moet een catch-blok voor een superklasse-uitzondering (zoals Exception) altijd na catch-blokken voor zijn subklassen (zoals NullPointerException of ArithmeticException) komen.
Als een superklasse catch-blok vóór zijn subklassen verschijnt, zal de compiler een foutmelding geven, omdat de catch-blokken voor subklassen dan onbereikbaar worden. Inzicht in deze hiërarchie zorgt ervoor dat uw programma uitzonderingen op de meest nauwkeurige manier afhandelt.
Main.java
12345678910111213141516package com.example; public class Main { public static void main(String[] args) { try { int[] numbers = {1, 2, 3}; System.out.println("Result: " + (10 / numbers[3])); } catch (ArithmeticException e) { System.out.println("ArithmeticException caught: " + e.getMessage()); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("ArrayIndexOutOfBoundsException caught: " + e.getMessage()); } catch (Exception e) { System.out.println("General Exception caught: " + e.getMessage()); } } }
In het bovenstaande programma probeert het try-blok 10 te delen door de waarde op index 3 van de array numbers. Omdat de array echter slechts drie elementen heeft (indices 0, 1 en 2), zal het benaderen van numbers[3] een ArrayIndexOutOfBoundsException veroorzaken.
Wanneer er een uitzondering optreedt, controleert Java elk catch-blok op volgorde. Eerst wordt gezocht naar een ArithmeticException, daarna naar een ArrayIndexOutOfBoundsException en ten slotte naar een algemene Exception. Omdat de opgetreden uitzondering overeenkomt met ArrayIndexOutOfBoundsException, wordt alleen dat catch-blok uitgevoerd en worden de andere overgeslagen. Dit toont aan hoe Java het meest specifieke overeenkomende catch-blok kiest, zodat de uitzondering op de juiste manier wordt afgehandeld.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.