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

bookUndtagelsespropagering

Stryg for at vise menuen

Når et Java-program kører, kan undtagelser blive kastet dybt inde i en række metodekald.

Note
Definition

Undtagelsespropagering er processen, hvor en undtagelse bevæger sig op gennem kaldestakken, indtil den enten opfanges af et matchende catch-blok eller, hvis den ikke håndteres, får programmet til at afslutte.

throws-nøgleordet bruges i metodedeklarationer til at angive, at en metode kan kaste en eller flere kontrollerede undtagelser. Dette betyder, at metoden ikke selv håndterer undtagelsen, men i stedet overfører ansvaret for håndteringen til de metoder, der kalder den.

Hvis en metode ikke fanger en undtagelse med et try-catch-blok, videregives undtagelsen til den metode, der kaldte den. Dette fortsætter op gennem kæden af metodekald. Hvis ingen af metoderne i kaldestakken håndterer undtagelsen, når den til sidst Java Virtual Machine (JVM), som vil afslutte programmet og udskrive en staksporing. Denne mekanisme gør det muligt at centralisere undtagelseshåndtering på et højere niveau i din applikation i stedet for at håndtere alle mulige undtagelser på det sted, hvor de kan opstå.

Main.java

Main.java

copy
1234567891011121314151617181920
package com.example; import java.io.IOException; public class Main { public static void main(String[] args) { try { readFile(); System.out.println("File read successfully."); } catch (IOException e) { System.out.println("Caught exception: " + e.getMessage()); } } // This method declares that it throws IOException public static void readFile() throws IOException { // Simulate an error when reading a file throw new IOException("Unable to read file."); } }

I programmet ovenfor erklærer readFile-metoden, at den kan kaste en IOException ved hjælp af throws-nøgleordet. Når readFile kaldes fra main, håndterer den ikke selv undtagelsen. I stedet, hvis der opstår en IOException, videregives den til main-metoden. main-metoden indeholder en try-catch-blok, der fanger IOException og håndterer den ved at udskrive en meddelelse.

Dette demonstrerer, hvordan undtagelsen bevæger sig fra det sted, hvor den kastes, gennem kaldestakken, indtil den til sidst fanges og håndteres af en passende catch-blok. Hvis main-metoden ikke fangede undtagelsen, ville den blive videreført, og JVM ville afslutte programmet efter at have udskrevet staksporingen.

question mark

Hvad er formålet med nøgleordet throws i en Java-metodedeklaration?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 9

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 9
some-alt