Ķēdētie izņēmumi Java
Java ķēdes izņēmumi ļauj saistīt vienu izņēmumu ar citu, t.i., viens izņēmums apraksta cita izņēmuma cēloni.
- Piemēram, apsveriet situāciju, kurā metode izmet an Aritmētiskais izņēmums jo mēģinājums dalīt ar nulli.
- Bet galvenais kļūdas cēlonis bija I/O kļūme, kuras dēļ dalītājs bija nulle.
- Šādos gadījumos ķēdes izņēmumi palīdz izplatīt gan primāros, gan kļūdas pamatcēloņus.
Piemērs : Šis piemērs parāda, kā Java izmantot ķēdītos izņēmumus.
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 ()); } } }
Izvade
Caught Exception: java.lang.NumberFormatException: Primary Exception Cause of Exception: java.lang.NullPointerException: Root cause of the exception
Piezīme: Ķēdētie izņēmumi, kas pazīstami arī kā ligzdotie izņēmumi, ļauj mums Java saistīt cēloni ar izņēmumu. Tas ir noderīgi, ja vēlamies izplatīt informāciju par izņēmuma sākotnējo cēloni.
Konstruktori
- Metams (metams iemesls) : kur iemesls ir izņēmums, kas izraisa pašreizējo izņēmumu.
- Izmetams (virknes ziņojums, ka jāmet) : kur msg ir izņēmuma ziņojums un cēlonis ir izņēmums, kas izraisa pašreizējo izņēmumu.
Metamo atbalsta ķēdes izņēmumu metodes
- getCause() : šī metode atgriež faktisko izņēmuma cēloni.
- initCause (izmetams iemesls) : šī metode iestata izsaukuma izņēmuma cēloni.
Piemērs: Pielāgota ziņojuma izmantošana ar ķēdītiem izņēmumiem
Java mēs varam ķēdīt izņēmumus, izmantojot klases Throwable konstruktoru.
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 ); } } }
Izvade:
Paskaidrojums: Šajā piemērā veselu skaitļu masīvs un iestata dalītāju uz 0.
- Try blokā tas mēģina dalīt katru masīva elementu ar 0, kas rada aritmētisko izņēmumu.
- Šis arithmētiskais izņēmums ir noķerts nozvejas blokā, kurā tiek izveidots jauns izpildlaika izņēmums ar sākotnējo izņēmumu, t.i., aritmētisko izņēmumu kā tā cēloni.
- Tā kā RuntimeException netiek notverts, kas parāda steka izsekošanu, tostarp RuntimeException un AritmeticException.
Ķēdes izņēmumu priekšrocības:
Tālāk ir norādītas ķēdes izņēmumu priekšrocības:
- Šis izņēmums palīdz atkļūdot, sniedzot informāciju gan par primārajiem, gan pamatcēloņiem.
- Tas vienkāršo kļūdu apstrādi, nodrošinot pilnīga izņēmuma konteksta izplatīšanu.
- Tas uzlabo kļūdu izsekojamību sarežģītās lietojumprogrammās.
Ķēdes izņēmumu trūkumi:
- Ja to neizmanto pareizi, tas var padarīt steku garāku un grūtāk nolasāmu.
- Pārmērīga izmantošana var radīt mulsinošus kļūdu ziņojumus, ja izņēmumi ir nevajadzīgi savienoti ķēdē.
- Izstrādātājiem ir jānodrošina jēgpilnu iemeslu saistība; pretējā gadījumā tas var maldināt atkļūdošanas laikā.
Kāds ir Java ķēdē savienoto izņēmumu galvenais mērķis?
- A
Lai slēptu izņēmuma galveno cēloni
- B
Saistīt vienu izņēmumu ar citu
- C
Lai uzlabotu koda veiktspēju
- D
Lai automātiski labotu izpildlaika kļūdas
Ķēdētie izņēmumi ļauj saistīt vienu izņēmumu ar citu, lai parādītu galveno cēloni.
Kura metode tiek izmantota, lai noteiktu izņēmuma cēloni?
- A
getMessage()
- B
setException()
- C
initCause()
- D
initCause()
Metode initCause() nosaka izņēmuma cēloni.
Kāda veida izņēmums šajā piemērā ir iestatīts kā NumberFormatException iemesls?
- A
IOIzņēmums
- B
Aritmētiskais izņēmums
- C
NullPointerException
- D
RuntimeException
Piemērā kā NumberFormatException cēlonis ir iestatīts NullPointerException.
Viktorīna ir veiksmīgi pabeigta, jūsu rezultāts: 2 /3 Precizitāte: 0% Piesakieties, lai skatītu skaidrojumu 1 /3 1 /3 < Previous Nākamais >