Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Flera Catch-Block | Sektion
Practice
Projects
Quizzes & Challenges
Frågesporter
Challenges
/
Java Undantagshantering

bookFlera 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

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 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.

question mark

Varför spelar ordningen på catch-blocken roll vid hantering av undantag i Java?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 5

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 1. Kapitel 5
some-alt