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

bookFlere Catch-Blokker

Sveip for å vise menyen

Når du arbeider med unntak i Java, må du ofte håndtere ulike typer feil som kan oppstå i koden din. Flere catch-blokker gir deg mulighet til å håndtere forskjellige unntakstyper separat innenfor én enkelt try-catch-struktur. Ved å plassere flere catch-blokker etter en try-blokk, kan du angi unik håndteringslogikk for hver unntaksklasse. Denne tilnærmingen gjør koden din mer robust, siden du kan håndtere spesifikke problemer som inndatafeil, aritmetiske feil eller nullreferanser på ulike måter, avhengig av situasjonen.

try {
    // code
} catch (Exception1) {
    // exception handling 1
} catch (Exception2) {
    // exception handling 2
}

Rekkefølgen på catch-blokkene er avgjørende fordi Java sjekker hver catch-blokk i rekkefølge, fra topp til bunn, for å finne en matchende unntakstype.

Siden unntak er organisert i et hierarki, må en catch-blokk for et superklasse-unntak (som Exception) alltid komme etter catch-blokker for dets subklasser (for eksempel NullPointerException eller ArithmeticException).

Hvis en superklasse-catch-blokk kommer før dens subklasser, vil kompilatoren generere en feil, fordi subklasse-catch-blokkene da blir utilgjengelige. Å forstå dette hierarkiet sikrer at programmet ditt håndterer unntak på en så presis måte som mulig.

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øker try-blokken å dele 10 med verdien på indeks 3 i numbers-arrayet. Siden arrayet kun har tre elementer (indeksene 0, 1 og 2), vil tilgang til numbers[3] kaste en ArrayIndexOutOfBoundsException.

Når et unntak oppstår, sjekker Java hver catch-blokk i rekkefølge. Først ser den etter en ArithmeticException, deretter en ArrayIndexOutOfBoundsException, og til slutt en generell Exception. Fordi det utløste unntaket samsvarer med ArrayIndexOutOfBoundsException, vil kun denne catch-blokken bli utført, og de andre blir hoppet over. Dette demonstrerer hvordan Java velger den mest spesifikke matchende catch-blokken, og sikrer at unntaket håndteres korrekt.

question mark

Hvorfor er rekkefølgen på catch-blokker viktig ved håndtering av unntak i Java?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 5

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 1. Kapittel 5
some-alt