Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Useita Catch-lohkoja | Osio
Practice
Projects
Quizzes & Challenges
Visat
Challenges
/
Java-Poikkeusten Käsittely

bookUseita Catch-lohkoja

Pyyhkäise näyttääksesi valikon

Työskennellessäsi poikkeusten kanssa Javassa, sinun täytyy usein käsitellä erilaisia virhetyyppejä, joita koodissasi voi esiintyä. Useat catch-lohkot mahdollistavat erilaisten poikkeustyyppien käsittelyn erikseen yhden try-catch-rakenteen sisällä. Sijoittamalla useita catch-lohkoja try-lohkon jälkeen voit määrittää yksilöllisen käsittelylogiikan jokaiselle poikkeusluokalle. Tämä lähestymistapa tekee koodistasi vankemman, sillä voit käsitellä erityisiä ongelmia, kuten syötevirheitä, laskuvirheitä tai null-viittauksia eri tavoin tilanteen mukaan.

try {
    // code
} catch (Exception1) {
    // exception handling 1
} catch (Exception2) {
    // exception handling 2
}

Catch-lohkojen järjestys on ratkaisevan tärkeä, koska Java tarkistaa jokaisen catch-lohkon järjestyksessä ylhäältä alas löytääkseen sopivan poikkeustyypin.

Koska poikkeukset on järjestetty hierarkiaan, yliluokan poikkeuksen (kuten Exception) catch-lohko tulee aina sijoittaa aliluokkien (kuten NullPointerException tai ArithmeticException) catch-lohkojen jälkeen.

Jos yliluokan catch-lohko on ennen aliluokkia, kääntäjä antaa virheen, koska aliluokkien catch-lohkot jäisivät saavuttamattomiksi. Tämän hierarkian ymmärtäminen varmistaa, että ohjelmasi käsittelee poikkeukset mahdollisimman tarkasti.

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()); } } }

Yllä olevassa ohjelmassa try-lohko yrittää jakaa luvun 10 taulukon numbers indeksin 3 arvolla. Koska taulukossa on kuitenkin vain kolme alkiota (indeksit 0, 1 ja 2), yritys käyttää numbers[3] aiheuttaa poikkeuksen ArrayIndexOutOfBoundsException.

Kun poikkeus tapahtuu, Java tarkistaa jokaisen catch-lohkon järjestyksessä. Ensin etsitään ArithmeticException, sitten ArrayIndexOutOfBoundsException ja lopuksi yleinen Exception. Koska heitetty poikkeus vastaa ArrayIndexOutOfBoundsException-tyyppiä, vain kyseinen catch-lohko suoritetaan ja muut ohitetaan. Tämä havainnollistaa, kuinka Java valitsee tarkimmin vastaavan catch-lohkon varmistaen, että poikkeus käsitellään asianmukaisesti.

question mark

Miksi catch-lohkojen järjestyksellä on merkitystä poikkeusten käsittelyssä Javassa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 5

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Osio 1. Luku 5
some-alt