Kædede undtagelser i Java
Kædede undtagelser i Java tillader at associere en undtagelse med en anden, dvs. en undtagelse beskriver årsagen til en anden undtagelse.
- Overvej for eksempel en situation, hvor en metode kaster en Aritmetisk Undtagelse på grund af et forsøg på at dividere med nul.
- Men grundårsagen til fejlen var en I/O-fejl, der fik divisoren til at være nul.
- I sådanne tilfælde hjælper kædede undtagelser med at udbrede både de primære og underliggende årsager til fejlen.
Eksempel : Følgende eksempel viser, hvordan man bruger kædede undtagelser i Java.
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 ()); } } }
Produktion
Caught Exception: java.lang.NumberFormatException: Primary Exception Cause of Exception: java.lang.NullPointerException: Root cause of the exception
Note: Kædede undtagelser, også kendt som indlejrede undtagelser, giver os mulighed for at knytte en årsag til en undtagelse i Java. Dette er nyttigt, når vi ønsker at udbrede information om den oprindelige årsag til en undtagelse.
Konstruktører
- Kastbar (årsag der kan kastes) : Hvor årsag er den undtagelse, der forårsager den aktuelle undtagelse.
- Kastbar (String msg Throwable årsag) : Hvor msg er undtagelsesmeddelelsen, og årsag er undtagelsen, der forårsager den aktuelle undtagelse.
Metoder til smidbare understøttende lænkede undtagelser
- getCause() : Denne metode returnerer den faktiske årsag til en undtagelse.
- initCause(Throwable cause) : Denne metode angiver årsagen til den kaldende undtagelse.
Eksempel: Brug af en brugerdefineret meddelelse med kædede undtagelser
I Java kan vi sammenkæde undtagelser ved hjælp af konstruktøren af Throwable-klassen.
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 ); } } }
Produktion:
Forklaring: I dette eksempel en matrix af heltal og sætter divisoren til 0.
- Inde i try-blokken forsøger den at dividere hvert element i arrayet med 0, hvilket kaster en ArithmeticException.
- Denne ArithmeticException er fanget i catch-blokken, hvor en ny RuntimeException oprettes med den oprindelige undtagelse, dvs. ArithmeticException som sin årsag.
- Da RuntimeException ikke fanges, hvilket viser stak-sporet inklusive RuntimeException og ArithmeticException.
Fordele ved kædede undtagelser:
Fordelene ved kædede undtagelser er anført nedenfor:
- Denne undtagelse hjælper med fejlretning ved at give detaljer om både primære og grundlæggende årsager.
- Det forenkler fejlhåndtering ved at aktivere udbredelse af fuldstændig undtagelseskontekst.
- Dette forbedrer sporbarheden af fejl i komplekse applikationer.
Ulemper ved kædede undtagelser:
- Hvis det ikke bruges korrekt, kan det gøre stakken længere og sværere at læse.
- Overforbrug kan forårsage forvirrende fejlmeddelelser, hvis undtagelser er kædet unødigt.
- Udviklere skal sikre, at meningsfulde årsager er forbundet; ellers kan det vildlede under fejlfinding.
Hvad er hovedformålet med lænkede undtagelser i Java?
- EN
For at skjule årsagen til en undtagelse
- B
At forbinde en undtagelse med en anden
- C
For at forbedre kodeydelsen
- D
For automatisk at rette runtime fejl
Sammenkædede undtagelser gør det muligt at knytte en undtagelse til en anden for at vise årsagen.
Hvilken metode bruges til at angive årsagen til en undtagelse?
- EN
getMessage()
- B
setException()
- C
initCause()
- D
initCause()
Metoden initCause() angiver den underliggende årsag til en undtagelse.
Hvilken type undtagelse er i eksemplet angivet som årsag til NumberFormatException?
- EN
IOException
- B
Aritmetisk Undtagelse
- C
NullPointerException
- D
RuntimeException
Eksemplet angiver en NullPointerException som årsagen til NumberFormatException.
Quiz gennemførte med succes Din score: 2 /3 Nøjagtighed: 0 % Log ind for at se forklaring 1 /3 1 /3 < Previous Næste >