Serkan Ayyıldız

Meraklı bir yazılım uzmanı...

C# Try-Catch-Finally Kullanımı ve Örneği

Selam Yazılımcı meslektaşlarım :)

Bugünkü makalemizde C# ile hata yakalama üzerinde değineceğiz.Düşünün bir program
yazdınız ve kullanıcıya sundunuz ancak kullanıcıdan ya da bir başka sebeple programınız
hatalı çalışmaya başladı ve çöktü.

Yukarıdaki senaryo yazılım dünyasında sık sık karşımıza çıkabilecek durumlardan birisidir
ve yazılım uzmanları olarak bizler bu durumu öngörerek kodlarımızı dikkatle ve her duruma 
karşı önceden planlayıp yazmamız gerekmektedir.

İşte tam bu noktada bir programlama mantığı devreye giriyor:"dene-yakala".Yani Türkçe karşılığıyla
"try-catch" denilen hata yakalama sistemi ile kodlarınız yanlış çalışmaya başladığında önceden bu
yapıyı hazırlayarak ciddi problemlerin önüne geçebilirsiniz.

İşleyiş bakımından oldukça basit bir yapısı olan try-catch'te çalışmasını istediğiniz kodlarınızı
try bloğu içerisinde yazarız ve kodlar yanlış çalışmaya başlaması ihtimalinde ne yapılmasını istediğimiz
diğer kodlarımızı da catch bloğu içersine yazarız.

Örnek olarak küçük bir uygulama yapalım;
Programımız kullanıcıdan bir sayı istesin ve eğer biz sayı yerine bir harf ya da kelime girersek bu hatayı
yakalasın ve bizi uyarsın:

Öncelikle bir proje oluşturalım ve form uygulaması açalım.

c# try-catch

Ardından kullanıcının textboxa gireceği sayıyı "sayi" isimli değişkene yükleyelim:

C# hata yakalama

Eğer kullanıcı gerçekten bir sayı girer ve program başarıyla sayısal değişken olan integer değişken tipine yükleyebilirse kullanıcıya hangi sayıyı girdiğini söylüyoruz ancak kullanıcı sayısal olmayan bir değer girerse program doğal olarak sayısal biçime çeviremeyeceği için catch bloğunda hatayı yakalayacağız ve yine kullanıcıyı uyaracağız.

Bir sayı girdik ve program doğru çalışıyor:

try-catch

Şimdi ise hatalı giriş yapalım:

c# try-catch

Gördüğünüz gibi programımız artık yanlış gidebilecek bir duruma karşı önceden hazırlıklı davranıyor,bu sebeple hatayı önceden tespit edip gerekli işlemi yapabiliyorsunuz.

Try-catch hata yakalama kod sistemi dışında kullanabileceğiniz bir diğer yapı ise "try-catch-finally" dir.Burada önceki yapıdan tek farklı olan "finally" yapısı program hata oluşsa da oluşmasa da finally kod bloğunu çalıştıracak olmasıdır.
Aynı örneğimiz üzerinden gidersek hata oluşsa da oluşmasa da kullanıcıya programı kullandığından ötürü teşekkür edelim:

try-catch-finally

ve tekrar programımızı test edersek;

try-catch-finally

try-catch-finally

Gördüğünüz gibi try-catch kod yapısı mükemmel denilebilecek şekilde çalışıyor ve yazılımcılar için biçilmiş kaftan denilebilir ancak bu kadar güzel olan bir sistemin tek dezavantajı birazcık performans kaybına neden olmasıdır.Tabi bu konuda gözünüz korkmasın çünkü bahsettiğim performans kaybı milisaniyeler (çok büyük projeler için bazen birkaç saniye) alabiliyor,tabi hata oluşma ihtimali yüksek işlemler gerçekleştirdiğiniz projelerde mutlaka kullanmanızı tavsiye ederim.

Dikkatinizi çekmek istediğim bir diğer nokta ise belki gözünüze takılmıştır:

c# exception

Burada catch parantezi içerisinde turkuaz renkli yazılı olan "Exception" deyimi yer almaktadır.Exception yakalanabilecek hatanın tipidir,örneğin bu küçük programımızda sadece exception kullandık ve bu çok genel hata yakalama şeklidir.

Diğer bazı exception tipleri de vardır,örneğin;

FormatException ile değişken tiplerine atadığımız değerlerin (convert) hatalı çalışmasında devreye giren hata yakalama tipidir ve biz bu projemizde genel exception yerine Exception yazdığımız her yere FormatException yazsaydık yine aynı sonuçları alırdık.

Bir diğer exception tipi ise DivideByZeroException tipidir.Bu tip bir sayının sıfıra bölünmesi anında tetiklenir,bildiğiniz gibi matematikte bir sayı sıfıra bölünemez,dolayısıyla bu mantıktan ötürü kullanılmaktadır.

Ayrıca kendi Exception hata tipini illa buradakilerden birini kullanmak zorunda değilsiniz,isterseniz kendi exception tipinizi kendiniz yazabildiğiniz gibi,program içersinde catch bloğu içersinde mutlaka bir exception tipini yazmak zorundasınız,aksinde program derleme hatası verecektir.

C# Try-Catch-Finally ile ilgili örnekler için bu kadar bilgi yeterlidir diye umuyorum,hepinize hiç hatası kodlamalar diliyorum :)

Hoşçakalın.

Projeyi İndir

6 Yorum:

  1. ..
    9/26/2013

    Çok Teşekkürler Hocam Çok Faydalı Oldu Bu

  2. Napacan
    12/4/2013

    Çok Sagolun hocam çok yararınız oldu

  3. adım ne bilmiyorum .
    4/16/2014

    Pek yararlı olmadı ama napalım bunla idare etmek zorundayız.. yinede tesekkürler..

  4. Özkan
    1/15/2014

    İdare eder Kardeşş

  5. by d
    2/25/2014

    diğerlerinide ekleseniz

  6. <a href="http://www.facebook.com">Face</a>
    10/5/2015

    çok güzel anlatmışınız teşekkürler.

Bir yorum bırak E-posta adresiniz yayınlanmayacaktır.

Menu