Java'da İstisna Hiyerarşisini Anlama Açıklaması

Yayınlanan: 2022-03-08

'İstisna' terimi, "istisnai olay"ın kısaltmasıdır. Java'da bir İstisna, esasen bir programın yürütülmesi sırasında meydana gelen ve programın normal akışını bozan bir olaydır. İstisnalar, genellikle çalışma veya derleme zamanında ortaya çıkan istenmeyen ve çoğunlukla beklenmedik durumlardır. Programın doğal akışında çalışmasını sağlamak için tüm bu İstisnaların ele alınması gerekir.

Ancak, İstisnaları ele almadan önce, Java'da ne tür İstisnaların bulunduğunu bilmek yardımcı olacaktır. Bu makale aracılığıyla, Java'daki çeşitli İstisna türlerine ve izledikleri İstisna Hiyerarşisine bakalım.

İçindekiler

Java'da İstisnalar Hiyerarşisi

Java programlama dilindeki İstisnalar hiyerarşisi, Object sınıfından gelen ve onun doğrudan alt sınıfı olan Throwable sınıfı ile başlarken, Exception sınıfı tüm This Throwable sınıfının diğer dallarını iki alt sınıfa sunar – Error ve İstisna. Java İstisna hiyerarşisini daha iyi anlamak için bir akış şeması:

İstisna sınıfı, Java programlama diliyle çalışırken ele almanız gerekebilecek tüm İstisnaları sunar. Bu tür İstisnaların yaygın olarak bilinen ve karşılaşılan bazı örnekleri arasında NullPointerException, ClassNotFoundException, IllegalArgumentException, vb. bulunur.

Öte yandan, Error sınıfı, Java program mimarinizdeki daha ciddi sorunlarla ilgilenir ve uygulama kodu içinde halledilmez. Java'daki bazı hata örnekleri InternalError, AssertionError, OutOfMemoryError, vb.'dir.

Java'daki istisnalar ayrıca iki kategoriye ayrılır:

  • Kontrol Edilen İstisnalar – Bunlar ayrıca derleme zamanı istisnaları olarak da bilinir.
  • Denetlenmeyen İstisnalar – Bunlar ayrıca çalışma zamanı istisnaları olarak da bilinir.

Bu noktada dikkat edilmesi gereken önemli bir nokta, denetlenmeyen İstisnaların tümünün RuntimeException sınıfının alt sınıflarıdır. Bu makalenin ilerleyen kısımlarında işaretli ve denetlenmeyen istisnalar hakkında daha fazla konuşacağız. Ancak ondan önce, Hatalar ve İstisnaların çalışmalarında nasıl farklılık gösterdiğine bir göz atalım, böylece kafa karışıklığı olmaz.

Java'daki Hatalar ve İstisnalar - Nasıl Farklılar?

Java programlama dilinin resmi belgeleri, Java programlamanız sırasında “makul bir uygulamanın yakalamaya çalışmaması gereken ciddi sorunları gösteren” olaylar olarak Hatalardan bahseder. Hataların ciddiyeti, bu ifadenin hazırlanma biçiminden açıktır. Açıkça, bu, programınızın karşılaşabileceği ve kodu yeniden düzenlemeden veya Java uygulama mimarisini değiştirmeden kurtarması mümkün olmayan bir dizi soruna atıfta bulunur.

Hata verecek bir Java yöntemine bakalım:

public static void print(String S) {

baskı(lar);

}

Yukarıda bahsedilen kodda, print() yöntemi, Java'da bir iş parçacığı yığını için izin verilen maksimum boyuta ulaşana kadar kendisini tekrar tekrar çağırmaya devam eden özyinelemeli bir yöntem olarak işlev görür. Bu noktada, aşağıdaki gibi bir şey okuyan çok yaygın bir StackOverflowError ile yürütmeden çıkar:

"Main" iş parçacığındaki istisna Java.lang.StackOverflowError

StackOverflowErrorExample.print'te(StackOverflowErrorExample.Java:3)

Yukarıdaki örneğin gösterdiği gibi, yöntem bir örnek atar, ancak bu hata kodun kendisinde ele alınamaz. Bu nedenle, hasar onarılamaz olduğu için program yürütmeyi durdurur. Çözüm olarak kodun değiştirilmesi gerekiyor.

Hataların aksine, İstisnalar, makul bir uygulama tarafından yakalanabilecek koşulları belirtir. Java'daki istisnalar, derleme zamanında veya çalışma zamanında meydana gelebilecek sorunları içerir. Bu İstisnalar, özellikle test ve hata ayıklama aşamasında tüm uygulamalarda oldukça sık meydana gelir. Sonuç olarak, Java'daki İstisnalar, kodun doğal akışını çalıştırmasını sağlamak için programın kendi içinde işlenebilir.

Şimdi, kontrol edilen ve edilmeyen İstisnaların neler olduğuna bakarak Java'daki İstisna Hiyerarşisi hakkında biraz daha konuşalım.

Java'da Kontrol Edilen ve Kontrol Edilmeyen İstisnalar

Daha önce bahsedildiği gibi, bir Java programında İstisnalar ya derleme zamanı sırasında ya da çalışma zamanı sırasında meydana gelebilir. Bu bize Java'da bulunan iki geniş İstisna türünü verir. İşte bu iki istisnayı ayrıntılı olarak inceliyoruz.

Derleme Zamanı İstisnaları

Derleme zamanında meydana gelen istisnalar, derleme zamanı istisnaları olarak bilinir. Bunlara ayrıca kontrol edilen istisnalar da denir, çünkü bunları Java programınızda açıkça kontrol etmeniz ve kodun kendisinde işlemeniz gerekir. InterruptedException, IOException ve daha fazlası gibi sınıflar kontrol edilen istisnalardır.

Kontrol edilen bir istisnayı işleyebilecek bir yönteme bakalım:

public void writeAFile() {

try (BufferedWriter b_w = new BufferedWriter(new FileWriter(“myFile.txt”))) {

b_w.write(“Test Ediliyor”);

} yakalama (IOException ioe) {

ioe.printStackTrace();

}

}

Gördüğünüz gibi, yukarıdaki kodun try bloğunda iki ifade var –

  • Nesneyi başlatma – BufferedWriter
  • Dosyaya yazmak için nesneyi kullanma

Bu ifadelerin her ikisi de IOException oluşturabilir. Kontrol Edilen İstisna olan IOException, arayan veya yöntem tarafından ele alınmalıdır. Yukarıdaki örnekte, yöntemin kendisinde işlenen istisnayı görebilirsiniz.

Çalışma Zamanı İstisnaları

Derleme zamanı sırasında oluşturulan derleme zamanı istisnalarının aksine, çalışma zamanı veya kontrol edilmeyen istisnalar "herhangi bir zamanda" fırlatılabilir, bu da esasen çalışma zamanında anlamına gelir. Bunun bir sonucu olarak, yöntemlerin bu denetlenmeyen istisnaları işlemek için açıkça yakalama ve atma bloklarını kullanması gerekmez. Denetlenmeyen çalışma zamanı istisnalarını devralan sınıflardan bazıları şunları içerir: NullPointerException, ArithmeticException, vb.

NullPointerException denetlenmeyen bir İstisna oluşturan ve öncekinden farklı olarak kod parçasında işlenmeyen bir Java kodu parçasına bakalım. İşte burada:

public void writeToFile() {

deneyin (BufferedWriter b_w = null) {

b_w.write(“Test”);

} yakalama (IOException ioe) {

ioe.printStackTrace();

}

}

Yukarıdaki yöntemi çağırdığınızda, BufferedWriter nesnesi boş olduğundan program bir NullPointerException oluşturur. İstisna şöyle okur:

"Main" iş parçacığında özel durum Java.lang.NullPointerException

IOExceptionExample.writeToFile'de(IOExceptionExample.Java:10)

IOExceptionExample.main'de(IOExceptionExample.Java:17)

Sonuç olarak

Bununla, Java'daki İstisna Hiyerarşisini anlama konusundaki bu blogun sonuna geldik. Lütfen bunun hiçbir şekilde Java'daki İstisnaların kapsamlı kapsamı olmadığını ve bunların nasıl ele alınacağını unutmayın. Bunun için daha derine inmeli ve nasıl çalıştıklarını görmek için kendinizi farklı olası İstisnalara maruz bırakmalısınız. İstisna İşleme'yi bilmek, İstisnalar herhangi bir uygulamanın temellerini oluşturduğundan, tam kapsamlı bir geliştirici olarak başarılı bir kariyer için sizi hazırlayacaktır.

upGrad'da, özel bir tam yığın geliştirme kursumuz var - Yazılım Geliştirmede Yönetici PG Programı - Tam Yığın Geliştirmede Uzmanlık - burada sizi büyük ölçüde Tam Yığın geliştirmeye odaklanarak yazılım geliştirmenin tüm nüanslarına götürüyoruz. Kursa göz atmanızı ve muhtemelen yakında bir yer ayırtmanızı öneririz!

1. Java'da İstisna Hiyerarşisinin en üstünde hangi sınıf bulunur?

Throwable sınıfı, Java'daki İstisna Hiyerarşisinin en üstündedir.

2. Java'da bulunan farklı İstisna türleri nelerdir?

Java, kontrol edilen istisnaların yanı sıra işaretlenmemiş. Kontrol Edilen İstisnalar, derleme zamanı istisnaları olarak da adlandırılırken, Kontrol Edilmeyen İstisnalar, çalışma zamanı istisnaları olarak da bilinir.

3. Java'da istisnalar nasıl işlenir?

Try-catch, Java'daki İstisnaları ele almanın en kolay yoludur. Çalıştırmak istediğiniz ana kod parçasının try bloğuna yerleştirilmesi gerekirken, bir veya daha fazla yakalama bloğu kodun attığı tüm istisnaları yakalayacaktır. Bu yöntem, atılan her tür Java istisnasını algılar.