Flere 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
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ø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.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår