Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Flere Catch-Blokke | Sektion
Java Undtagelseshåndtering

bookFlere 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

Main.java

copy
12345678910111213141516
package 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.

question mark

Hvorfor er rækkefølgen af catch-blokke vigtig ved håndtering af undtagelser i Java?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 5

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 1. Kapitel 5
some-alt