Flere Catch-Blokke
Stryg for at vise menuen
Når du arbejder med undtagelser i Java, skal du ofte håndtere forskellige typer fejl, der kan opstå i din kode. Flere catch-blokke giver mulighed for at reagere på forskellige undtagelsestyper hver for sig inden for en enkelt try-catch-struktur. Ved at placere flere catch-blokke efter en try-blok kan du angive unik håndteringslogik for hver undtagelsesklasse. Denne tilgang gør din kode mere robust, da du kan håndtere specifikke problemer som inputfejl, aritmetiske fejl eller null-referencer forskelligt afhængigt af situationen.
try {
// code
} catch (Exception1) {
// exception handling 1
} catch (Exception2) {
// exception handling 2
}
Rækkefølgen af catch-blokke er afgørende, fordi Java gennemgår hver catch-blok i rækkefølge, fra top til bund, for at finde en matchende undtagelsestype.
Da undtagelser er organiseret i et hierarki, skal en catch-blok for en superklasse-undtagelse (som Exception) altid placeres efter catch-blokke for dens underklasser (såsom NullPointerException eller ArithmeticException).
Hvis en superklasse catch-blok vises før dens underklasser, vil compileren generere en fejl, fordi underklasse catch-blokkene ville blive utilgængelige. Forståelse af dette hierarki sikrer, at dit program håndterer undtagelser på den mest præcise måde muligt.
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()); } } }
I programmet ovenfor forsøger try-blokken at dividere 10 med værdien på indeks 3 i numbers-arrayet. Da arrayet kun har tre elementer (indeks 0, 1 og 2), vil adgang til numbers[3] udløse en ArrayIndexOutOfBoundsException.
Når en undtagelse opstår, gennemgår Java hver catch-blok i rækkefølge. Først kontrolleres for en ArithmeticException, derefter en ArrayIndexOutOfBoundsException og til sidst en generel Exception. Da den udløste undtagelse matcher ArrayIndexOutOfBoundsException, udføres kun denne catch-blok, og de andre springes over. Dette demonstrerer, hvordan Java vælger den mest specifikke matchende catch-blok for at sikre, at undtagelsen håndteres korrekt.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat