Java'da Try-Catch-Sonunda | İstisna işleme
· Deneme Blokları
· Yakalama Blokları
· Sonunda Bloklar
· Hepsini bir araya getirme
· İç içe try blokları
· Birden çok istisnayı yakala
Blokları Deneyin
Try blokları, try/catch bloklarının ilk kısmıdır. Bir istisnaya neden olabilecek herhangi bir kod içerirler. Java'da bir ifadenin sonucundan emin olmadığımızda, bu ifadeleri bu try bloğunun içine koyabiliriz. Bir try bloğu, bir yöntemde veya başka bir try bloğunda kullanılabilir.
Try bloğunu her zaman , ilgili try bloğunda meydana gelen istisnayı işleyen bir catch bloğu takip eder .
IOExceptions için, try bloğunun içine dosya oluşturan, dosyadan okuyan, dosyaya yazan veya kapatan herhangi bir kod koyun
Sözdizimi
Bir istisna işleyici oluşturmanın ilk adımı, bir try bloğu içinde bir istisna oluşturabilecek kodu çevrelemektir . Genel olarak, bir try bloğu aşağıdaki gibi görünür:
try {
code
}
catch and finally blocks . . .
Örnek
ListOfNumbers sınıfından writeList yöntemi için bir istisna işleyicisi oluşturmak üzere writeList yönteminin istisna atan deyimlerini bir try bloğu içine alın. Bunu yapmanın birden fazla yolu var. İstisna oluşturabilecek her kod satırını kendi try bloğuna koyabilir ve her biri için ayrı istisna işleyicileri sağlayabilirsiniz. Ya da tüm writeList kodunu tek bir try bloğuna koyabilir ve bununla birden çok işleyiciyi ilişkilendirebilirsiniz. Aşağıdaki liste, söz konusu kod çok kısa olduğu için tüm yöntem için bir try bloğu kullanır.
private List<Integer> list;
private static final int SIZE = 10;
public void writeList() {
PrintWriter out = null;
try {
System.out.println("Entered try statement");
FileWriter f = new FileWriter("OutFile.txt");
out = new PrintWriter(f);
for (int i = 0; i < SIZE; i++) {
out.println("Value at: " + i + " = " + list.get(i));
}
}
catch and finally blocks . . .
}
Blok Yan Notları Deneyin
- Try blokları, bir istisnayı tetikleyebilecek kodun yanı sıra istisnalara neden olmayan kodlar da içerebilir (ancak zorunlu değildir).
- Programlar birden fazla try bloğu içerebilir. Ek olarak, başka bir try bloğunun içinde bir try bloğu olabilir.
Yakalama Blokları
Bir try/catch bloğunun ikinci yarısı catch bloğudur. Try blokları bir istisnaya neden olan kodu içerirken, catch blokları bir istisnayı işleyen kodu içerir.
Java'da, try bloğundan yakalanan istisnayı işlemek için catch bloğu kullanılır. catch bloğu kodu içerir ve try bloğu içinde bir istisna oluşursa yürütülür. Sistem bir try bloğundaki ifadeleri yürütürken bir istisna ile karşılaşırsa, geri kalan ifadeleri atlar ve kontrolü karşılık gelen catch bloğuna aktarır.
catch bloğu, parametre içinde istisna türünü bildirerek try bloğu istisnalarını yakalar ve işler. catch bloğunda bildirilen istisna, üst sınıf istisnası (yani, İstisna) veya oluşturulan istisna türü olmalıdır. Ancak, en iyi yaklaşım, oluşturulan istisna türünü bildirmektir.
catch bloğu her zaman try bloğundan sonra gelir. Kontrol bir kez try bloğundan çıktıktan sonra onu tekrar try bloğuna almanın bir yolu yoktur.
Sözdizimi
Try bloğundan hemen sonra bir veya daha fazla catch bloğu sağlayarak, istisna işleyicilerini try bloğuyla ilişkilendirirsiniz . try bloğunun sonu ile ilk catch bloğunun başlangıcı arasında hiçbir kod olamaz .
try {
} catch (ExceptionType name) {
}
catch bloğu , istisna işleyici çağrıldığında ve çağrıldığında yürütülen kodu içerir. İşleyici, çağrı yığınında İstisna Türü atılan istisnanın türüyle eşleşen ilk kişi olduğunda, çalışma zamanı sistemi istisna işleyicisini çağırır. Fırlatılan nesne yasal olarak istisna işleyicinin bağımsız değişkenine atanabiliyorsa, sistem bunu bir eşleşme olarak kabul eder.
Yakalama Bloğu Argümanları
Yakalama blokları, yakalamaları (işlemeleri) gereken bir istisna türü olan bir bağımsız değişken alır. Bu bağımsız değişkenler, çok özel bir istisna türünden çok genel bir tümünü yakalama istisna kategorisine kadar değişebilir.
Örnek
Aşağıdakiler writeList yöntemi için iki istisna işleyicisidir:
try {
} catch (IndexOutOfBoundsException e) {
System.err.println("IndexOutOfBoundsException: " + e.getMessage());
} catch (IOException e) {
System.err.println("Caught IOException: " + e.getMessage());
}
Yakalama Bloğu İçeriği
Bir catch bloğunun içeriği, bir istisna oluştuğunda (örn. erişilen dosya mevcut olmadığında) olmasını istediğiniz şeydir. Bir mesaj yazdırabilir veya hatayı düzeltmek için bir şeyler yapan bir koda sahip olabilirsiniz (örn. dosya adını tekrar
Blok Mesajlarını Yakala (Bir İstisnanın Açıklamasını Görüntüleme)
Bir catch bloğunun içine istediğiniz herhangi bir mesajı yazdırabilirsiniz.
toString()'i kullanma
Atılabilir, toString() yöntemini (Object tarafından tanımlanan) geçersiz kılar, böylece istisnanın açıklamasını içeren bir dize döndürür. Bu açıklamayı bir println( ) ifadesinde, istisnayı argüman olarak ileterek görüntüleyebilirsiniz. Örneğin, önceki programdaki catch bloğu şu şekilde yeniden yazılabilir:
catch (ArithmeticException e) {
System.out.println("Exception: " + e);
a = 0; // set a to zero and continue
}
Exception: java.lang.ArithmeticException: / by zero
- getMessage() : her istisna türüne özgü bir hata mesajı döndürür. Bunu bir println deyimiyle eşleştirin.
- printStackTrace() : hatanın türünü ve programda nerede oluştuğunu yazdırır Bu yöntemler özellikle hata ayıklama ve bir istisnanın nedenini bulmak için yararlıdır
- Her try bloğu en az bir catch bloğuna ihtiyaç duyar.
- Try blokları birden fazla catch bloğuna sahip olabilir. Sağdaki örneğe bakın.
- Catch blokları, eşleştirildikleri try bloğundan hemen sonra gelmelidir.
Sonunda Bloklar
Bir try bloğunu takip eden bir kod bloğu oluşturmak için bir finally anahtar sözcüğü kullanılır. Bir nihayet kod bloğu, bir istisna meydana gelse de gelmese de her zaman yürütülür. Bir nihayet bloğu kullanarak, korumalı kodda ne olursa olsun, yürütmek istediğiniz herhangi bir temizleme türü deyimini çalıştırmanıza izin verir. catch bloğunun sonunda bir nihayet bloğu belirir. nihayet blokları, nesne referanslarını geçersiz kılmak ve G/Ç akışlarını kapatmak için kullanılır.
try bloğundan çıkıldığında , finally bloğu her zaman yürütülür . Bu , beklenmeyen bir istisna meydana gelse bile nihayet bloğun yürütülmesini sağlar . Ancak son olarak istisna işlemekten daha fazlası için kullanışlıdır - programcının temizleme kodunun yanlışlıkla bir dönüş , devam veya ara ile atlamasını önlemesine olanak tanır . Bir nihayet bloğuna temizleme kodu koymak, herhangi bir istisna beklenmediğinde bile her zaman iyi bir uygulamadır.
Çalışma zamanı sistemi, try bloğu içinde ne olduğuna bakılmaksızın her zaman nihayet bloğu içindeki ifadeleri yürütür . Bu yüzden temizlik yapmak için mükemmel bir yer.
Sözdizimi
finally {
// cleanup code
}
writeList yöntemi için aşağıdaki nihayet bloğu, PrintWriter ve FileWriter öğelerini temizler ve ardından kapatır .
finally {
if (out != null) {
System.out.println("Closing PrintWriter");
out.close();
} else {
System.out.println("PrintWriter not open");
}
if (f != null) {
System.out.println("Closing FileWriter");
f.close();
}
}
- Nihayet bloklar, try/catch bloklarına isteğe bağlı bir eklentidir.
- Son olarak, kodunuzla istisnai olarak ne olursa olsun, çalıştırılmasını istediğiniz kod için bloklar kullanılır.
- Yürütülen son şeydir ve programınızı her çalıştırdığınızda yürütülürler.
- Nihayet bloğunun bir kullanımı, bir programın sonunda bir dosyanın kapatıldığından emin olmak olabilir.
private List<Integer> list;
private static final int SIZE = 10;
public void writeList() {
PrintWriter out = null;
try {
System.out.println("Entered try statement");
FileWriter f = new FileWriter("OutFile.txt");
out = new PrintWriter(f);
for (int i = 0; i < SIZE; i++) {
out.println("Value at: " + i + " = " + list.get(i));
}
}
// catch blocks
catch (IndexOutOfBoundsException e) {
System.err.println("IndexOutOfBoundsException: " + e.getMessage());
}
catch (IOException e) {
System.err.println("Caught IOException: " + e.getMessage());
}
// finally block
finally {
if (out != null) {
System.out.println("Closing PrintWriter");
out.close();
} else {
System.out.println("PrintWriter not open");
}
if (f != null) {
System.out.println("Closing FileWriter");
f.close();
}
}
}
İç içe try blokları kullanıldığında , önce iç try bloğu yürütülür. İç try bloğunda atılan herhangi bir istisna, karşılık gelen catch bloğunda yakalanır. Eşleşen bir catch bloğu bulunamazsa, dış try bloğunun catch bloğu denetlenir. Bu işlem, iç içe geçmiş tüm try ifadeleri tükenene kadar devam eder. Eşleşen bir catch bloğu bulunamazsa, program anormal bir şekilde sonlandırılır.
iç içe try-catch bloğunu ziyaret edin .
Birden fazla istisna yakala
Java'da bildiğiniz gibi, birden çok istisnayı işlemek için birden çok catch bloğu kullanabiliriz.
Örnek :
catch (IOException ex) {
logger.error(ex);
throw new MyException(ex.getMessage());
catch (SQLException ex) {
logger.error(ex);
throw new MyException(ex.getMessage());
}
Örnek :
catch(IOException | SQLException ex){
logger.error(ex);
throw new MyException(ex.getMessage());
}
Mutlu öğrenmeler
Mouad Oumous Java WhatsApp Grubuna Katılın
Mouad Oumous Telegram Kanalına Katılın
Yayınımızı takip ederek destek olun
Spring Boot'a Başlarken: Yeni Başlayanlar İçin Kapsamlı Bir Eğitim Spring Boot Security | TOA | Okta ile OAuth2 En Sık Sorulan Java8 Akışına Dayalı Mülakat Sorusu — Bölüm 2 Java Kodlamada ModelMapper ile Nesne Eşleme Kılavuzu : Javascript'te bir diziyi düzleştirme En Sık Sorulan Java8 Akışına Dayalı Mülakat Sorusu — Bölüm 1
![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































