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

bookUnntakspropagering

Sveip for å vise menyen

Når et Java-program kjører, kan unntak kastes fra dypt inne i en rekke metodekall.

Note
Definisjon

Unntakspropagering er prosessen der et unntak beveger seg oppover kallstakken til det enten fanges av en samsvarende catch-blokk eller, hvis det ikke håndteres, fører til at programmet avsluttes.

Nøkkelordet throws brukes i metodedeklarasjoner for å indikere at en metode kan kaste ett eller flere kontrollerte unntak. Dette betyr at metoden ikke håndterer unntaket selv, men overlater ansvaret for håndteringen til metodene som kaller den.

Hvis en metode ikke fanger et unntak med en try-catch-blokk, sendes unntaket videre til metoden som kalte den. Dette fortsetter oppover i kjeden av metodekall. Hvis ingen av metodene i kallestakken håndterer unntaket, vil det til slutt nå Java Virtual Machine (JVM), som avslutter programmet og skriver ut en stakksporing. Denne mekanismen gjør det mulig å sentralisere unntakshåndtering på et høyere nivå i applikasjonen, i stedet for å håndtere alle mulige unntak der de kan oppstå.

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 å bruke throws-nøkkelordet. Når readFile kalles fra main, håndterer den ikke unntaket selv. I stedet, hvis en IOException oppstår, sendes den videre til main-metoden. main-metoden inneholder en try-catch-blokk som fanger IOException og håndterer den ved å skrive ut en melding.

Dette demonstrerer hvordan unntaket beveger seg fra punktet der det kastes, gjennom kallestakken, til det til slutt blir fanget og håndtert av en passende catch-blokk. Hvis main-metoden ikke fanget unntaket, ville det ha blitt propagert videre, og JVM ville avsluttet programmet etter å ha skrevet ut stakksporingen.

question mark

Hva er formålet med nøkkelordet throws i en Java-metodedeklarasjon?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 9

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