Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Undantagspropagering | Sektion
Java Undantagshantering

bookUndantagspropagering

Svep för att visa menyn

När ett Java-program körs kan undantag kastas från djupa nivåer inom en serie av metodanrop.

Note
Definition

Undantagspropagering är processen där ett undantag förflyttas uppåt i anropsstacken tills det antingen fångas av ett matchande catch-block eller, om det inte hanteras, orsakar att programmet avslutas.

throws-nyckelordet används i metoddeklarationer för att ange att en metod kan kasta ett eller flera kontrollerade undantag. Detta innebär att metoden inte hanterar undantaget själv, utan överlåter ansvaret för hanteringen till de metoder som anropar den.

Om en metod inte fångar ett undantag med ett try-catch-block, skickas undantaget vidare till den metod som anropade den. Detta fortsätter uppåt i anropskedjan av metoder. Om ingen av metoderna i anropsstacken hanterar undantaget, når det till slut Java Virtual Machine (JVM), som avslutar programmet och skriver ut en stackspårning. Denna mekanism gör det möjligt att centralisera undantagshantering på en högre nivå i applikationen, istället för att hantera varje möjligt undantag där det kan uppstå.

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 ovan deklarerar metoden readFile att den kan kasta ett IOException med hjälp av throws-nyckelordet. När readFile anropas från main hanterar den inte undantaget själv. Istället, om ett IOException uppstår, skickas det vidare till main-metoden. main-metoden innehåller ett try-catch-block som fångar IOException och hanterar det genom att skriva ut ett meddelande.

Detta visar hur undantaget färdas från den punkt där det kastas, genom anropsstacken, tills det slutligen fångas och hanteras av ett lämpligt catch-block. Om main-metoden inte hade fångat undantaget, skulle det ha propagerat vidare och JVM skulle avsluta programmet efter att ha skrivit ut stackspårningen.

question mark

Vad är syftet med nyckelordet throws i en metoddeklaration i Java?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 9

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