Lančane iznimke u Javi

Lančane iznimke u Javi

Lančane iznimke u Javi dopuštaju povezivanje jedne iznimke s drugom, tj. jedna iznimka opisuje uzrok druge iznimke.

  • Na primjer, razmotrite situaciju u kojoj metoda baca an ArithmeticException zbog pokušaja dijeljenja s nulom.
  • No glavni uzrok pogreške bio je I/O kvar zbog kojeg je djelitelj bio nula.
  • U takvim slučajevima ulančane iznimke pomažu u širenju primarnih i temeljnih uzroka pogreške.

Primjer : Sljedeći primjer pokazuje kako koristiti ulančane iznimke u Javi.

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

Izlaz
Caught Exception: java.lang.NumberFormatException: Primary Exception Cause of Exception: java.lang.NullPointerException: Root cause of the exception  

Bilješka: Lančane iznimke također poznate kao ugniježđene iznimke omogućuju nam povezivanje uzroka s iznimkom u Javi. Ovo je korisno kada želimo širiti informacije o izvornom uzroku iznimke.

Konstruktori

  • Bacivi (bacivi uzrok) : gdje je uzrok iznimka koja uzrokuje trenutnu iznimku.
  • Throwable(String msg Throwable reason) : Gdje je msg poruka o iznimci, a uzrok je iznimka koja uzrokuje trenutnu iznimku.

Metode Throwable Supporting Chained Exceptions

  1. getCause() : Ova metoda vraća stvarni uzrok iznimke.
  2. initCause (uzrok koji se može izbaciti) : Ova metoda postavlja uzrok za pozivnu iznimku.

Primjer: Korištenje prilagođene poruke s ulančanim iznimkama

U Javi možemo ulančati iznimke koristeći konstruktor klase Throwable.

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

Izlaz:

Izlaz

Obrazloženje: U ovom primjeru niz cijelih brojeva i postavlja djelitelj na 0.

  • Unutar bloka try pokušava podijeliti svaki element niza s 0 što izbacuje ArithmeticException.
  • Ova ArithmeticException je uhvaćena u bloku catch gdje se kreira nova RuntimeException s izvornom iznimkom, tj. ArithmeticException kao uzrokom.
  • Budući da RuntimeException nije uhvaćen, što prikazuje praćenje hrpe uključujući RuntimeException i ArithmeticException.

Prednosti lančanih iznimaka:

Prednosti ulančanih iznimaka navedene su u nastavku:

  • Ova iznimka pomaže u otklanjanju pogrešaka pružajući pojedinosti o primarnim i temeljnim uzrocima.
  • Pojednostavljuje rukovanje pogreškama omogućavajući širenje kompletnog konteksta iznimke.
  • To poboljšava mogućnost praćenja pogrešaka u složenim aplikacijama.

Nedostaci lančanih iznimaka:

  • Ako se ne koristi ispravno, može učiniti praćenje hrpe duljim i težim za čitanje.
  • Prekomjerna upotreba može uzrokovati zbunjujuće poruke o pogrešci ako su iznimke nepotrebno ulančane.
  • Programeri moraju osigurati da su smisleni uzroci povezani; inače može dovesti u zabludu tijekom otklanjanja pogrešaka.
Predloženi kviz Uredi kviz 3 pitanja

Koja je glavna svrha lančanih iznimaka u Javi?

  • A

    Sakriti glavni uzrok iznimke

  • B

    Povezati jednu iznimku s drugom

  • C

    Za poboljšanje izvedbe koda

  • D

    Za automatsko popravljanje pogrešaka tijekom izvođenja

Obrazloženje:

Ulančane iznimke omogućuju povezivanje jedne iznimke s drugom kako bi se pokazao glavni uzrok.

Koja se metoda koristi za postavljanje uzroka iznimke?

  • A

    getMessage()

  • B

    setException()

  • C

    initCause()

  • D

    initCause()

Obrazloženje:

Metoda initCause() postavlja temeljni uzrok iznimke.

U primjeru koja je vrsta iznimke postavljena kao uzrok za NumberFormatException?

  • A

    IOException

  • B

    ArithmeticException

  • C

    NullPointerException

  • D

    RuntimeException

Obrazloženje:

Primjer postavlja NullPointerException kao uzrok NumberFormatException.

Lančane iznimke u JaviKviz uspješno završen Vaš rezultat:   2 /3 Točnost:  0% Prijavite se za pregled objašnjenja 1 /3 1 /3 < Previous Dalje >

Možda Će Vam Se Svidjeti