Javalla ketjutetut poikkeukset
Javan ketjutetut poikkeukset mahdollistavat yhden poikkeuksen yhdistämisen toiseen, eli yksi poikkeus kuvaa toisen poikkeuksen syytä.
- Tarkastellaan esimerkiksi tilannetta, jossa menetelmä heittää an Aritmeettinen poikkeus nollalla jakamisyrityksen takia.
- Mutta virheen perimmäinen syy oli I/O-virhe, joka aiheutti jakajan olevan nolla.
- Tällaisissa tapauksissa ketjutetut poikkeukset auttavat levittämään sekä virheen ensisijaisia että taustalla olevia syitä.
Esimerkki : Seuraava esimerkki osoittaa kuinka ketjutettuja poikkeuksia käytetään Javassa.
Java // Working of chained exceptions public class Geeks { public static void main ( String [] args ) { try { // Creating an exception NumberFormatException ex = new NumberFormatException ( 'Primary Exception' ); // Setting the cause of the exception ex . initCause ( new NullPointerException ( 'Root cause of the exception' )); // Throwing the exception with a cause throw ex ; } catch ( NumberFormatException ex ) { // Displaying the primary exception System . out . println ( 'Caught Exception: ' + ex ); // Displaying the root cause of the exception System . out . println ( 'Cause of Exception: ' + ex . getCause ()); } } }
Lähtö
Caught Exception: java.lang.NumberFormatException: Primary Exception Cause of Exception: java.lang.NullPointerException: Root cause of the exception
Huomautus: Ketjutetut poikkeukset, joita kutsutaan myös sisäkkäisiksi poikkeuksiksi, antavat meille mahdollisuuden yhdistää syyn poikkeukseen Javassa. Tämä on hyödyllistä, kun haluamme levittää tietoa poikkeuksen alkuperäisestä syystä.
Rakentajat
- Heitettävä (heitettävä syy) : Missä syy on poikkeus, joka aiheuttaa nykyisen poikkeuksen.
- Heitettävä (merkkijonoviesti Heitettävä syy) : Missä msg on poikkeusviesti ja syy on poikkeus, joka aiheuttaa nykyisen poikkeuksen.
Menetelmät heitettävien tukiketjujen poikkeuksiin
- getCause() : Tämä menetelmä palauttaa poikkeuksen todellisen syyn.
- initCause (heitettävä syy) : Tämä menetelmä määrittää kutsupoikkeuksen syyn.
Esimerkki: Mukautetun viestin käyttäminen ketjutetuilla poikkeuksilla
Javassa voimme ketjuttaa poikkeuksia käyttämällä Throwable-luokan konstruktoria.
Java // Use a custom message with chained exception public class Geeks { public static void main ( String [] args ) { try { // Code that might throw an exception int [] n = new int [ 5 ] ; int divisor = 0 ; for ( int i = 0 ; i < n . length ; i ++ ) { int res = n [ i ] / divisor ; System . out . println ( res ); } } catch ( ArithmeticException e ) { // Creating a new exception with // the original as the cause throw new RuntimeException ( 'Error: Division by zero occurred' e ); } } }
Lähtö:
Selitys: Tässä esimerkissä kokonaislukujen joukko ja asettaa jakajaksi 0.
- Try-lohkon sisällä se yrittää jakaa taulukon jokaisen elementin 0:lla, mikä antaa aritmeettisen poikkeuksen.
- Tämä aritmeettinen poikkeus jää kiinni lohkoon, jossa luodaan uusi RuntimeException, jonka syynä on alkuperäinen poikkeus eli AritmeticException.
- Koska RuntimeExceptionia ei havaita, mikä näyttää pinon jäljityksen, mukaan lukien RuntimeException ja AritmeticException.
Ketjuttujen poikkeusten edut:
Ketjuttujen poikkeusten edut on lueteltu alla:
- Tämä poikkeus auttaa virheenkorjauksessa antamalla tietoja sekä ensisijaisista että perimmäisistä syistä.
- Se yksinkertaistaa virheiden käsittelyä mahdollistamalla täydellisen poikkeuskontekstin leviämisen.
- Tämä parantaa virheiden jäljitettävyyttä monimutkaisissa sovelluksissa.
Ketjuttujen poikkeusten haitat:
- Jos sitä ei käytetä oikein, se voi tehdä pinojäljestä pidemmän ja vaikeammin luettavan.
- Liiallinen käyttö voi aiheuttaa hämmentäviä virheilmoituksia, jos poikkeuksia ketjutetaan tarpeettomasti.
- Kehittäjien on varmistettava, että merkitykselliset syyt liittyvät toisiinsa. muuten se voi johtaa harhaan virheenkorjauksen aikana.
Mikä on ketjutettujen poikkeusten päätarkoitus Javassa?
- A
Poikkeuksen perimmäisen syyn piilottaminen
- B
Yhden poikkeuksen yhdistäminen toiseen
- C
Koodin suorituskyvyn parantamiseksi
- D
Korjaa ajonaikaiset virheet automaattisesti
Ketjutetut poikkeukset mahdollistavat yhden poikkeuksen linkittamisen toiseen poikkeuksen perimmäisen syyn osoittamiseksi.
Mitä menetelmää käytetään poikkeuksen syyn määrittämiseen?
- A
getMessage()
- B
setException()
- C
initCause()
- D
initCause()
Metodi initCause() määrittää poikkeuksen taustalla olevan syyn.
Millainen poikkeus esimerkissä on asetettu syyksi NumberFormatExceptionille?
- A
IOException
- B
Aritmeettinen poikkeus
- C
NullPointerException
- D
RuntimeException
Esimerkki asettaa NullPointerExceptionin syyksi NumberFormatExceptionin.
Tietokilpailu suoritettu onnistuneesti pisteesi: 2 /3 Tarkkuus: 0 % Kirjaudu sisään nähdäksesi selityksen 1 /3 1 /3 < Previous Seuraava >