msHOWTO

5 Nisan 2012 Perşembe

C# 'da Try Catch Finally

Merhaba arkadaşlar.Kısaca try catch blokları yazılım geliştirirken oluşacak hataları kontrol etmek amacıyla kullanılır.Peki iyi güzel de hata nedir? Öncelikle buradan başlayalım anlatmaya.Şimdi düşünün yazılım geliştirdiniz on numara çalışıyor (yani öyle gözüküyor.) Fakat diyelim ki aldınız programınızı sattınız veya birine kullanması için verdiniz ve sizin düşünmediğiniz bir şekilde veriler girdi programınıza.Böyle bir durumda eğer siz bu şekilde ki durumları kontrol etmezseniz programınız hata verecektir ve kesinlikle o program dağları yaratan bir program da olsa hata verdiği an kullanıcı için değeri sıfırdır. Programı verirken bak abi burda şu şekilde bilgi gircen burda bu şekilde fln gibi uyarılar yaparım diyeceksiniz.Ama en iyi yazılım en kolay kullanılan , kullanıcıyı dar boğaza sokmayan ve min. seviyede hata mesajları veren yazılımdır.Tabi gerçek hayatta son kullanıcıların nasıl bir şekilde veri girip hata oluşturacaklarını tahmin etmek kısmen mümkündür.Emin olun hiç bir şekilde aklınıza gelmeyen şekillerde kullanan olabilir.İşte tam bu noktada eğer yazılımın akışı sırasında işlenecek kodlar riskli kodlar ise hata çıkma olasılığı var ise o kodlar try catch blokları arasına alınır.Hadi gelin syntax ini inceleyelim biraz ...


try
{
// .... bu blok arasına işlenecek olan riskli kodlar yazılır.
}
catch (Exception) //Exception bir turdur. Catch kodunun yanına bu türde bir değişken //tanımlayarak try bloğundaki kodların işlenmesinde herhangi bir hata oluşursa meydana gelen //hatanın türüne bu şekilde ulaşabiliriz.Böylelikle kullanıcıya anlamsız yani kullanıcının //anlayabileceği bir şekilde mesajlar döndürebiliriz.
{
               
//..... bu kısıma da eğer try bloğunda işlenecek olan kodlarda bir hata oluşursa yapılacak //işlemler yazılır.İlla ki doldurmak gerekmemektedir.
}
 finally
{
 // Diyelim ki öyle bir durum oluştu ki hata meydana gelse de gelmese de eğer kod akışı try //bloğuna girdiyse mutlaka çalışması gereken kodlar var ise işte o kodları tam buraya //yazmamız gerekmektedir.
}


Peki bu şekilde tek bir catch bloğu yazarsak ya genel bir Exception sınıfını yakalarız yada catch bloğunun yanına yazılacak farklı exception türlerinden oluşan hatayı yakalarız.Fakat ben öngördüğüm tüm hataları yakalamak ve ona göre kullanıcıya mesajlar göstermek istiyorum.Ve eğer benim öngördüğüm hatalar dışında bir durum olursa o zaman da ona göre genel bir mesaj göstermek istiyorum.Bunu nasıl yapacağım ? Try catch finally bloğuna dilediğiniz kadar catch bloğu koyabilirsiniz.Aşağıdaki gibi ;

try
            {

            }
            catch (FormatException)
            {

                throw;
            }
            catch (OverflowException)
            {

                throw;
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
            }

Fakat burada dikkat edilmesi gereken en önemli konu yakalanmak istenen exception lar yani hatalar özelden genele doğru olmak zorundadır.Yani 


try
            {

            }
catch (Exception)
            {

                throw;
            }

            catch (FormatException)
            {

                throw;
            }
            catch (OverflowException)
            {

                throw;
            }
            
            finally
            {
            }

şeklinde bir yazım sonucunda hata alırız.Çünkü çok mantıksızdır.Bu şekilde yazmak ne demektir ? Baba sen bir hata olursa önce en genel olarak şu kodları yap daha sonra duruma göre aşağıdakilerden birini yaparsın.Çok mantıksız bir işlem demektir bu. 

Umarım faydalı olmuşumdur . Diğer yazılarımda görüşmek dileğiyle ...


Hiç yorum yok:

Yorum Gönder