C# Try-Catch

Muhammet Ali
9 Haziran 2015 Salı
0

try..catch, uygulamada hata oluştuğunda yapılması istenilen kodların yazıldığı try ve catch isimli bloklardan oluşan bir yapıdır. try bloğunda hata vermesi muhtemel kodlar yer alır. Eğer bir hata oluşursa, uygulama hata oluşan satırda durup hata vermez; bunun yerine catch bloğu içerisindeki kodlar çalışmaya başlar. catch bloğundaki kodlar çalıştıktan sonra uygulama hata oluşan try bloğu içerisinden değil, try..catch yapısı altındaki kodlardan devam eder. Böylelikle uygulamamız hata oluşsa bile sağlıklı bir şekilde çalışmaya devam eder.

try..catch yapısı şu şekildedir:

try

{

//Try Bloğu

//Buraya hata vermesi muhtemel kodlar yazılır
}

catch (Exception ex)
{

//Catch Bloğu

//Buraya hata oluştuğunda çalışacak kodlar yazılır
}

Örnek olarak bir projede textBox1 isimli bir TextBox kontrolünüz var. Kullanıcının bu kontrole girdiği değeri, matematik işleminde kullanılmak için int veri tipine çevirmek istiyorsunuz. Bu kodda meydana gelebilecek muhtemel çalışma zamanı hatasını önceden kestirebilirsiniz. Kullanıcı int veri tipine dönüştürülemeyecek bir veri girerse uygulama hata verir. Bu durum oluştuğunda, kullanıcıya anlaşılır bir şekilde uyarı vermek de istersiniz.  Bu yüzden kodunuzu try bloğu içerisine yazarsınız. Bu blok içerisindeki kodda bir hata oluştuğunda, beklediğiniz hata veya başka bir hata fark etmez, catch bloğu içerisindeki kod çalışır.

try

{

int sayi;

sayi = Convert.ToInt32(textBox1.Text);
}

catch (Exception ex)
{

MessageBox.Show(“Geçerli bir sayı giriniz.”);
}

Catch bloğunun yanındaki (Exception ex) bölümü, oluşan hata ile ilgili detaylı bilgi almak için kullanılır. Örneğin catch bloğu içerisinde kullanılan ex.Message hatanın verdiği mesajı,  ex.Source ise hatanın nerede oluştuğunu döner.

Bir try bloğunun birden fazla catch bloğu olabilir. Böylelikle oluşacak hataya göre farklı kodlar çalıştırabilirsiniz. Örneğin bir dosya açma programında dosyanın belirttiğiniz yolda olmaması bir hatadır, dosyanın bozuk olması başka bir hatadır.Bir de try..catch yapısı ile beraber çalışan finally bloğu vardır. Bu blok tamamen opsiyoneldir, kullanıp kullanmamak sizin kararınıza kalmıştır. finally bloğunda yazılan kodlar, try içerisinde bir hata oluşsun ya da oluşmasın her zaman çalışır.

Bu iki senaryoyu da eğitiminizin ilerleyen zamanlarında göreceksiniz.

enlightenedUygulamanızda try..catch bloğu kullanıp, catch bloğu içerisini boş bırakırsanız uygulamanız asla hata vermez. Ancak bu istenmeyen bir durumdur.Çünkü uygulamanın verdiği hata çözülmeyip, sadece göz ardı edilmiştir. 



Yorum yaz