Java Exception Handling Nedir, Nasıl Yapılır? | try-catch Kullanımı

Osman Doğan
4 min readDec 3, 2022

Bir önceki yazımızda Exception konusuna oldukça detaylı bir şekilde yer vermiş, onları Checked ve Unchecked olarak iki kısma ayırmıştık. Ayrıca en çok kullanılan Exception’ları derlemiş ve Exception Handle işlemini detaylı bir biçimde ele alacağımızı söylemiştik. Bu yazıda, Exception Handling nedir, try-catch-finally neden ve nasıl kullanılır gibi pek çok soruya yer verecek ve bunları detaylı bir şekilde örneklerle ele almaya çalışacağız. İşte Exception Handling ve try-catch-finally kullanımı ile ilgili bilmeniz gerekenler.

Exception Handling Nedir?

Exception Handling, ön görülemeyen ve beklenmeyen sebeplerden ötürü, program çalıştığı esnada ortaya çıkan hata ve sorunları kontrol altına alma, idare etme işlemlerine verilen isimdir. Bu işlemler, böyle bir hata ortaya çıktığında program veya sistemin durmasını/çökmesini önlemek ve çalışmayı devam ettirebilmek amacıyla yapılır.

Exception Handle işlemi ile Java’ya belirli hatalar, belirli istisnalar karşısında ne yapması gerektiğini söyleriz. Böylelikle program çalışırken yani runtime’da ortaya çıkabilecek tüm sorunlara karşı bir b planı hazırlanmış olur. Böylelikle yazılımcı tarafından geliştirilen program ortaya çıkabilecek hatalarda çalışmayı durdurmaz veya çökmez, hazırlanan plan çerçevesinde bir mesaj verir veya farklı bir işlem yapar ve uygun bir biçimde çalışmaya devam eder.

Exception konusunda da ifade ettiğimiz üzere, çok farklı sebeplerden ötürü bir exception durumu ortaya çıkabilir. Bu, kullanıcı tarafından girilen uygunsuz bir değerden, programın çalıştığı sistemden, internet kesintisinden Java tarafından ön görülemeyen hatalı bir koddan veya buna benzer bir sebepten kaynaklı olabilir. Bize düşen buna benzer hataların oluşabileceği alanları öngörüp, handle ederek bir çıkış yolu bir b planı hazırlamak olacak.

Peki bir ve birden fazla exception nasıl handle edilir? Aşağıda try-catch nasıl kullanılır ve exception nasıl handle edilir, detaylı bir şekilde göstermeye çalışacağız.

try-catch kullanımı

Yukarıda da ifade ettiğimiz üzere program çalıştığı esnada ortaya çıkan bir hata programın durmasına ve hatanın sebep olduğu koddan sonraki kısmın hiç bir şekilde çalıştırılamamasına yol açar. İşte try-catch block’ları ortaya bu çıkabilecek bu tür problemlerin etkilerinden kaçınmak için oluşturulmuştur.

try{} İngilizce’de dene anlamına gelen bir sözcüktür. Tahmin edebileceğiniz üzere kodlarımızı yazdığımız, yapılmasını istediğimiz işlemleri girdiğimiz bölüm, try bölümüdür. Örnek vermek gerekirse, kullanıcıdan alınan iki sayıdan ilkini ikinciye bölen ve sonucu ekrana yazdıran bir programımız var. Biz kullanıcının ilk sayıyı sıfır(0) olarak vermesi ihtimalini de göz önüne alarak, bu kodu try{} block’unun içine yazıyoruz.

catch(){} İngilizce’de yakala anlamına gelen catch block’unda ise ilk olarak parantez içerisinde ortaya çıkabilecek exception’ları yani hataları yakalıyor, daha sonra süslü parantez içerisinde ise bu durumda gerçekleştirilmesi gereken işlemleri giriyoruz.

Böylelikle programımızda herhangi bir exception durumu ortaya çıksa bile, programımız çalışmaya devam ediyor ve hataya sebep olan koddan sonraki kodlar da çalıştırılmış oluyor.

Aşağıdaki örneklere bakarak, try-catch kullanımını daha iyi anlayabilirsiniz.

public class Ornek {

public static void main(String[] args) {
int a = 5;
int b = 0;
try{
// try block icerisine yapmak istedigimiz islemi giriyoruz.
System.out.println(a/b);
}catch(ArithmeticException e)
//catch parantezine olusmasi muhtemel exception class isminini
// ve referans obje ismi yaziyoruz (genelde e ismi kullanlır)
{
System.out.println("Bir Sayi Sifira Bolunemez");
//Son olarak Catch block'unun icerisine hata yakalanması durumunda yapılacak işlemleri giriyoruz.
}
// Böylelikle herhangi bir hata yakalanırsa catch block'u devreye girecek ve program calısmaya devam edecektir.
}

}

Try-Catch Ne Zaman, Ne İçin Kullanılır?

Yukarıda da ifade ettiğimiz üzere, try-catch block’ları herhangi bir runtime exception’un ortaya çıkabileceği yerlerde kullanılır. Bu, yukarıdaki örnekte olduğu gibi bir sayının sıfıra bölünmesinden kaynaklanabileceği gibi, null bir değerin verilmesinden, bir String veya Array’in sınırlarının aşılmasından veya farklı bir data girilmesinden kaynaklanabilir. Program çalışırken en sık karşılaşılan exceptionlar şunlardır;

Sık Karşılaşılan RunTime (Unchecked) Exception’lar

RunTime Exceptions, kod çalıştırıldığında yani run edildiğine ortaya çıkan exceptionlardır. En çok karşımıza çıkan bazı run time exception’lar şunlardır.

  • ArithmeticException
  • NullPointerException
  • ArrayIndexOutOfBoundsException
  • NumberFormatException
  • StringIndexOutOfBoundsException
  • IllegalArgumentException
  • InvalidArgumentException

Daha Detaylı Bilgi İçin: Java Exception Nedir? Exception Türleri Nelerdir

Bunların dışında sayılabilecek daha başka exception’lar da vardır. RunTime Exception’larla ilgili daha detaylı bilgiler için Exception yazımıza göz atabilirsiniz.

try-catch kullanımı ile ilgili bilinmesi gerekenler

try-catch kullanırken dikkat edilmesi ve bilinmesi gereken bazı hususlar vardır.

  • İlk olarak try block’u hiçbir zaman kendi başına kullanılamaz. Ya catch, ya da finally ile birlikte kullanılmalıdır.
  • try, birden fazla catch ile kullanılabilir. Yani aynı anda birden fazla exception handle edilebilir.
  • Daha kapsamlı bir handle işlemi için catch block’u içerisine üst sınıf bir exception yazılabilir. Mesela Exception class, tüm exception’ların parent class’ıdır. Catch parantezine exception yazarak, oluşabilecek tüm exception’ları handle edebilirsiniz. Bunun dezavantajı, bir exception özelinde değil, yalnızca daha genel işlemler yapılabilmesine olanak sağlamasıdır.
  • Exception referans objesi ile kullanılabilecek bazı metotlar vardır. Bunlardan en sık kullanılanları, e.getMessage(); ve e.printStackTrace(); metodudur.
  • e.getMessage(); Exception nedenini, kısa bir mesaj şeklinde verir. Görmek, göstermek için print etmek gerekir.
  • e.printStackTrace(); Exception ile ilgili detaylı bilgileri, otomatik olarak print etmeye gerek kalmadan ekrana yazdırır.

finally Nedir? Nasıl Kullanılır?

try-catch ile birlikte kullanılır. Sonuç ne olursa olsun, kod bir exception’a yol açsa da açmasa da, finally block’u içerisine yazılan işlem muhakkak gerçekleşir. finally genellikle, veri tabanıyla olan bağlantıyı sonlandırma, dosyayı kapama vs. gibi işlemler için kullanılır.

public class Ornek {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
try {
System.out.println("Ilk harfini gormek isteginiz kelimeyi girin");
String str = input.next();
System.out.println("Girdiginiz Kelimenin Ilk Harfi " + str.charAt(0));
}catch (NullPointerException e){
System.out.println("Hatanın Sebebi " + e.getMessage());
}catch (Exception e){
//Ustteki catch block exception'u yakalayamazsa çalışacak block
e.printStackTrace(); // teknik mesaj yazdırır.
}finally {
System.out.println("Her halükarda çalışacak olan block");
}

}

}

--

--