Flera Catch-Block
Svep för att visa menyn
Vid arbete med undantag i Java behöver du ofta hantera olika typer av fel som kan uppstå i din kod. Flera catch-block gör det möjligt att hantera olika undantagstyper separat inom en enda try-catch-struktur. Genom att placera flera catch-block efter ett try-block kan du ange unik hanteringslogik för varje undantagsklass. Detta tillvägagångssätt gör din kod mer robust, eftersom du kan hantera specifika problem som inmatningsfel, aritmetiska fel eller null-referenser på olika sätt beroende på situationen.
try {
// code
} catch (Exception1) {
// exception handling 1
} catch (Exception2) {
// exception handling 2
}
Ordningen på catch-blocken är avgörande eftersom Java kontrollerar varje catch-block i tur och ordning, uppifrån och ned, för att hitta en matchande undantagstyp.
Eftersom undantag är organiserade i en hierarki måste ett catch-block för ett superklassundantag (som Exception) alltid placeras efter catch-block för dess subklasser (såsom NullPointerException eller ArithmeticException).
Om ett superklass-catch-block placeras före dess subklasser kommer kompilatorn att generera ett fel, eftersom subklassernas catch-block då blir oåtkomliga. Att förstå denna hierarki säkerställer att ditt program hanterar undantag på det mest precisa sättet.
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 ovan försöker try-blocket dividera 10 med värdet på index 3 i arrayen numbers. Eftersom arrayen endast har tre element (index 0, 1 och 2), kommer ett försök att nå numbers[3] att utlösa ett ArrayIndexOutOfBoundsException.
När ett undantag inträffar kontrollerar Java varje catch-block i ordning. Först letar den efter en ArithmeticException, sedan en ArrayIndexOutOfBoundsException och slutligen en generell Exception. Eftersom det utlösta undantaget matchar ArrayIndexOutOfBoundsException kommer endast det catch-blocket att köras och de andra hoppas över. Detta visar hur Java väljer det mest specifika matchande catch-blocket för att säkerställa att undantaget hanteras korrekt.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal