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
- getCause() : Bu yöntem bir istisnanın gerçek nedenini döndürür.
- 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ış:
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.
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
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()
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ı
Örnek, NumberFormatException'ın nedeni olarak bir NullPointerException'ı ayarlar.
Sı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 >