Useita 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
12345678910111213141516package 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.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme