Java'da Zincirlenmiş İstisnalar

Java'da Zincirlenmiş İstisnalar

Java'daki Zincirlenmiş İstisnalar, bir istisnanın diğeriyle ilişkilendirilmesine izin verir; yani bir istisna, başka bir istisnanın nedenini açıklar.

  • Örneğin, bir yöntemin bir atış yaptığı bir durumu düşünün. Aritmetikİstisna sıfıra bölme girişimi nedeniyle.
  • Ancak hatanın temel nedeni, bölenin sıfır olmasına neden olan bir G/Ç hatasıydı.
  • Bu gibi durumlarda zincirleme istisnalar, hatanın hem birincil hem de temel nedenlerinin yayılmasına yardımcı olur.

Örnek : Aşağıdaki örnek, Java'da zincirleme istisnaların nasıl kullanılacağını gösterir.

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

Çıkış
Caught Exception: java.lang.NumberFormatException: Primary Exception Cause of Exception: java.lang.NullPointerException: Root cause of the exception  

Not: İç içe istisnalar olarak da bilinen zincirleme istisnalar, Java'da bir nedeni bir istisnayla ilişkilendirmemize olanak tanır. Bu, bir istisnanın orijinal nedeni hakkında bilgi yaymak istediğimizde kullanışlıdır.

İnşaatçılar

  • Fırlatılabilir (Atılabilir sebep) : Burada neden, mevcut istisnaya neden olan istisnadır.
  • Throwable(String msg Throwable nedeni) : Burada msg istisna mesajıdır ve sebep ise mevcut istisnaya neden olan istisnadır.

Atılabilir Zincirleme İstisnaları Destekleme Yöntemleri

  1. getCause() : Bu yöntem bir istisnanın gerçek nedenini döndürür.
  2. initCause(Atılabilir neden) : Bu yöntem çağıran istisnanın nedenini belirler.

Örnek: Zincirlenmiş İstisnalarla Özel Mesaj Kullanma

Java'da Throwable sınıfının yapıcısını kullanarak istisnaları zincirleyebiliriz.

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

Çıkış:

Çıkış

Açıklama: Bu örnekte bir tamsayı dizisi var ve böleni 0 olarak ayarlıyor.

  • Try bloğunun içinde dizinin her öğesini 0'a bölmeye çalışır ve bu da bir ArithmeticException oluşturur.
  • Bu ArithmeticException, orijinal istisnayla, yani nedeni olarak ArithmeticException ile yeni bir RuntimeException'ın oluşturulduğu catch bloğunda yakalanır.
  • RuntimeException ve ArithmeticException dahil olmak üzere yığın izlemesini görüntüleyen RuntimeException yakalanmadığından.

Zincirlenmiş İstisnaların Avantajları:

Zincirleme istisnaların avantajları aşağıda listelenmiştir:

  • Bu istisna, hem birincil hem de temel nedenlere ilişkin ayrıntılar sağlayarak hata ayıklamaya yardımcı olur.
  • İstisna bağlamının tamamının yayılmasını sağlayarak hata işlemeyi basitleştirir.
  • Bu, karmaşık uygulamalardaki hataların izlenebilirliğini artırır.

Zincirlenmiş İstisnaların Dezavantajları:

  • Düzgün kullanılmazsa yığın izlemeyi daha uzun hale getirebilir ve okunmasını zorlaştırabilir.
  • Aşırı kullanım, istisnaların gereksiz yere zincirlenmesi durumunda kafa karıştırıcı hata mesajlarına neden olabilir.
  • Geliştiriciler anlamlı nedenlerin bağlantılı olduğundan emin olmalıdır; aksi takdirde hata ayıklama sırasında yanıltıcı olabilir.
Önerilen Test Testi Düzenle 3 Soru

Java'daki zincirleme istisnaların temel amacı nedir?

  • A

    Bir istisnanın temel nedenini gizlemek için

  • B

    Bir istisnayı diğeriyle ilişkilendirmek için

  • C

    Kod performansını artırmak için

  • D

    Çalışma zamanı hatalarını otomatik olarak düzeltmek için

Açıklama:

Zincirlenmiş istisnalar, temel nedeni göstermek için bir istisnayı diğerine bağlamaya olanak tanır.

Bir istisnanın nedenini belirlemek için hangi yöntem kullanılır?

  • A

    getMessage()

  • B

    setException()

  • C

    initCause()

  • D

    initCause()

Açıklama:

initCause() yöntemi, bir istisnanın altında yatan nedeni belirler.

Örnekte NumberFormatException'ın nedeni olarak ne tür bir istisna ayarlandı?

  • A

    IO İstisnası

  • B

    Aritmetikİstisna

  • C

    NullPointerException

  • D

    Çalışma Zamanı İstisnası

Açıklama:

Örnek, NumberFormatException'ın nedeni olarak bir NullPointerException'ı ayarlar.

JavaSınav Başarıyla Tamamlandı Puanınız :   2 /3 Kesinlik :  %0 Açıklamayı Görmek İçin Giriş Yapın 1 /3 1 /3 < Previous Sonraki >