|
Programcılıkta bilindiği üzere tüm
diller de hata oluşma olasılığı çok yüksektir . Bu hatalar gerek
kullanıcılar tarafından gerekse programın çalıştırılması için gerekli
olana diğer yardımcı unsurların düzgün olarak çalışmamasından dolayı
ortaya çıkabilir . Bu hataları yakalamak , yok etmek gerçekten de güçtür
. Oluşabilecek hataları teker teker göz önüne alarak kontrollere
bağlanır . Ancak bu işi tek tek yapmak zor olur hatta gözden kaçanlar
olursa işimiz daha da zorlaşacaktır . C# `ta bu hataları yakalamak ,
önlemek için bazı yöntemler bulunmaktadır . Bu yazımda bunlar dan try-catch
ve try-catch-finally bloklarından bahsedeceğim .
Try-Catch
Blokları
Try – Catch bloklarında ; try
içerisine hataya sebep olabilecek kodların , catch içerisine ise eğer
bir hata oluşur ise programın ne yapacağını , ne şekilde devam edeceğini
belirttiğimiz kodları yazarız . Kullanımını şu şekildedir :
|
try
{
//Hataya sebep
olabilecek kodların yazıldığı bölüm
}
catch
{
//Programın hata
sonrası nasıl devam edeceğinin belirtildiği bölüm
} |
Şimdi bir örnek yardımı ile konuyu
pekiştirelim . Diyelim ki programımızda bir kişinin maaşını hesaplıyoruz
. Bunun için kullanıcıdan çalışanın birim saat ücretini ve kaç saat
çalıştığını alıyoruz . Eğer kullanıcı bu bölümlere sayısal değer dışında
bir giriş yapar ise , almış olduğumuz değeri sayısal bir değere
dönüştüremeyeceğimiz için ve bu değerler ile matematiksel işlem
yapamayacağımız için programımızda hata oluşacaktır .
|
private
void btnHesapla_Click(object
sender,System.EventArgs e)
{
int bsUcreti,
acSaati;
try
{
bsUcreti = int.Parse(textBox1.Text);
acSaati = int.Parse(textBox2.Text);
}
catch
{
MessageBox.Show("Lütfen
Sayısal Değerler Giriniz");
}
} |
Eğer direk olarak hatanın ne olduğunu
kullanıcıya aktarmak istiyor iseniz catch bloğunu şu şekilde
değiştirmelisiniz
|
catch(Exception
hataID)
{
MessageBox.Show(tihs,"Hata
Oluştu"+ hataID);
}
|
Try –
Catch – Finally
Try – Catch bloklarına
ek olarak birde Try – Catch – Finally bloklaı vardır . Buradaki fark ise
eğer herhangi bir hata oluşsun yada oluşmasın her durumda yapılması
gereken bir iş var ise finally bloğu içerisinde yazılabilir . Örneğin
bir veritabanı uygulaması geliştiriyorsunuz . Bu tarz işlemlerde
veritabanına bağlanıp yapmak istediğiniz işlemi tamamladıktan sonra
mutlaka veritabanını kapatmak istersiniz . Buda ne demektir yapacağınız
iş başarılı olsun yada olmasın her durumda veritabanına olan
bağlantınızı sonlandıracaksınız . İşte bu gibi durumları finally bloğu
içerisinde belirtilir . Kullanımı da şu şekildedir .
|
private
void btnBilgiGuncelle_Click(object
sender,System.EventArgs e)
{
try
{
bsUcreti = int.Parse(textBox1.Text);
acSaati = int.Parse(textBox2.Text);
}
catch
{
MessageBox.Show("Lütfen
Sayısal Değerler Giriniz");
}
finally
{
bglanti.Close();
}
} |
|