catch etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
catch etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

23 Ocak 2018 Salı

Niçin Try Catch Kullanma(ma)lıyız ?

       S.a. Arkadaşlar,
       Bugünkü konumuz try carch ile ilgili, fakat nasıl kullanılacağı ile ilgili değil. Eğer nasıl kullanıldığına bakacaksınız buradaki yazımdan bakabilirsiniz. Peki biz ne ile ilgileneceğiz. Biz hangi durumlarda try catch kullanmalıyız, hangi durumlarda kullanmaktan kaçınmalıyız sorusunun cevabını arayacağız.

6 Ocak 2015 Salı

Try Catch

     Bugün de try-catch kullanımını ve bazı ince noktalarını ele almaya çalışacağız. Öncelikle try catch nedir onu inceleyelim. Beklenmeyen anlarda ortaya çıkan hataları yakalayan ve hataların yerine neyin çalıştırılmasını sağlar. Şimdi yavaş yavaş kodlamaya başlayalım. Hem kodlarken söylediklerimizi daha iyi ifade edebiliriz.

public static void main(String[] args) {

try {
System.out.println("try 1");
throw new NullPointerException();//hata fırlatıyoruz
} catch (NullPointerException e) {
System.out.println("catch 1"); //hata olduğundan girer
} finally {
System.out.println("finally 1"); //her koşulda girer
}

try {
System.out.println("try 2");
} catch (NullPointerException e) {
System.out.println("catch 2"); // hata olmadığından çalışmaz
} finally {
System.out.println("finally 2"); // catchden bağımsız çalışır
}


try {
System.out.println("try 3");
System.out.println(10 / 0); //
} catch (NullPointerException e) {
                        System.out.println("catch 3");
                    //nullPointerException değil aritmetikException olmalıydı
                        //bu yüzden bu catch yakalanmaz
} finally {
System.out.println("finally 3"); // her şartta çalışır
}
}
Gerekli yorumları kod üzerinden vermeye çalıştık. Şimdi de dicked exception diye nitelendirilen tabire göz atalım. Dicked exception nedir, kısaca ona bir göz atalım daha sonra kod kısmında ne istediğimi daha iyi anlatmış olacağımızı umuyorum. Alt alta sıralanan metodlar olsun ve bu metotların belirli bir hiyerarşisi olsun. Bu hiyerarşi içerisinde yukarıdan aşağı hata fırlatmaya başlasın ve bu hata bir alta devreder. Eğer hatayı yakalayacak bir try catch yoksa bir diğerine devreder, en sonunda bu işlem tüm programı etkiler. Fakat aradaki metodlardan birini bunu engellerse hata tüm programı etkilemeyecektir. Ne demek istediğimi şimdi kod ile anlamaya çalışalım.

public class DuckedException {
public static void main(String[] args) {
doStuff();
System.out.println("Hata yakalandi, uygulama calismaya devam eder.");
               //try cath hiç kullanılmasaydı doğal olarak bu satır da gelmeyecekti
}

static void doStuff() {
try{ // eğer burada da try catch kullanılmamış olsaydık
                      //hatayı main içerisinde yakalamamız lazımdı
                      //main içerisinde yakalanmadığında programımız çökecekti
doMoreStuff();
}catch(Exception e) {
              //e.printStackTrace(); ile de hatanın türünü saptayabiliriz
}
}

static void doMoreStuff()   {
int x = 5 / 0; //burada herhangi bir try catch kullanılmadığından
                 //hata doStuff metoduna intikal eder.
  // ArithmeticException hatasi firlatilacaktir.
}
}

Biz bu yazıda genelde try catch ile hata yakalamayı gördük, fakat throws keywordi ile de hata fırlatabiliriz. try-catch ile hata fırlatmaya handle , throws ile hata ayıklamaya da declare denir. Bununla ilgili de bir örnek verecek olursak;

void throwMeAgain() throws IOException {
try {
throw new IOException();
} catch (IOException e) {
throw e;
}
}
                                                      Resim-1[1] Exceptionlar

Kaynakça
[1]https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-101/trycatchfinally-yapisi
http://www.injavawetrust.com/pure-java-47-handling-exception-01/
http://www.injavawetrust.com/pure-java-48-handling-exception-02/