Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Poikkeuksen Eteneminen | Osio
Java-Poikkeusten Käsittely

bookPoikkeuksen Eteneminen

Pyyhkäise näyttääksesi valikon

Kun Java-ohjelma suoritetaan, poikkeuksia voi syntyä syvältä useiden metodikutsujen ketjusta.

Note
Määritelmä

Poikkeuksen eteneminen tarkoittaa prosessia, jossa poikkeus siirtyy kutsupinon läpi ylöspäin, kunnes se joko käsitellään sopivassa catch-lohossa tai, jos sitä ei käsitellä, ohjelma päättyy.

throws-avainsanaa käytetään metodin määrittelyssä osoittamaan, että metodi voi heittää yhden tai useamman tarkastetun poikkeuksen. Tämä tarkoittaa, että metodi ei käsittele poikkeusta itse, vaan siirtää vastuun poikkeuksen käsittelystä kutsuvalle metodille.

Jos metodi ei käsittele poikkeusta try-catch-lohkolla, poikkeus siirtyy kutsuvalle metodille. Tämä jatkuu metodikutsujen ketjussa ylöspäin. Jos mikään kutsupinon metodeista ei käsittele poikkeusta, se lopulta saavuttaa Java Virtual Machinen (JVM), joka lopettaa ohjelman suorituksen ja tulostaa pinon jäljityksen. Tämä mekanismi mahdollistaa poikkeusten käsittelyn keskittämisen sovelluksen ylemmälle tasolle sen sijaan, että jokainen mahdollinen poikkeus käsiteltäisiin siinä kohdassa, missä se voi ilmetä.

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."); } }

Yllä olevassa ohjelmassa readFile-metodi ilmoittaa, että se voi heittää IOException-poikkeuksen käyttämällä throws-avainsanaa. Kun readFile kutsutaan main-metodista, se ei käsittele poikkeusta itse. Sen sijaan, jos IOException tapahtuu, se siirtyy main-metodille. main-metodi sisältää try-catch-lohkon, joka ottaa kiinni IOException-poikkeuksen ja käsittelee sen tulostamalla viestin.

Tämä havainnollistaa, kuinka poikkeus kulkee siitä kohdasta, missä se heitetään, kutsupinon läpi, kunnes se lopulta otetaan kiinni ja käsitellään sopivassa catch-lohkossa. Jos main-metodi ei ottaisi poikkeusta kiinni, se leviäisi edelleen ja JVM lopettaisi ohjelman suorituksen tulostaen pinon jäljityksen.

question mark

Mikä on throws-avainsanan tarkoitus Java-metodin määrittelyssä?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 9

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 1. Luku 9
some-alt