Hata Yakalama Try-Catch-Finally [ vb.net ]

Maveraün Nehr

Blue Team Expert
25 Haz 2021
975
1,861
41.303921, -81.901693
Günaydın arkadaşlar bugün sizlere başlıkta olduğu gibi bazı olayları göstereceğim. İlk göstereceğim konu formunuzda hata yakalama mesela iki sayının toplamı örneğinde sayı ile birlikte harf girildiğinde aşağıdaki gibi hata mesajını alırız. Bu tür hatalar meydana geldiği zaman "try catch" ile hatayı mesaj kutusunda gösterebiliriz. Bu sayede programımız ani hatalar ile kapanmaz.

Örnek sayı toplamı kodum;


Kod:
 Dim sayı1 = CSng(TextBox1.Text)
        Dim sayı2 = CSng(TextBox2.Text)
        Dim sonuc = TextBox3.Text
        sonuc = sayı1 + sayı2
        TextBox3.Text = sonuc

sayı1 veya sayı2 ben sayı1'e(textbox1) yazdım fark etmez harf girdiğiniz zaman hata alır ve programınız kapanır.


Hata oluştuğu zaman catch’dan End Try kadar olan kodlar gerçekleştirilir. Program kodlarımızı try’dan sonra yazıyoruz. Catch’dan sonra ex yerine bir değişken tanımlıyoruz. Ben aşağıda görüldüğü gibi değişkene sorun adını verdim. Siz farklı bir isim verebilirsiniz. Catch’dan sonraki kodlar ise hata oluştuktan çalışır. Hata oluştuğu zaman mesaj kutusunda hatanın adını da yazsın diye değişken_ismi.message kodunu kullandım.(sorun.Message).Baş tarafına da Hata: ekledim. İkisini birleştirmek içinde & işaretini kullandım. Vb.net'te metinleri birleştirme işlemi için & işareti kullanılır. Şunu da belirtelim ekranda mesaj kutusu olarak kullanıcıya uyarı yansıtmak için MsgBox kullanılır.

Kod:
Try
            Dim sayı1 = CSng(TextBox1.Text)
            Dim sayı2 = CSng(TextBox2.Text)
            Dim sonuc = TextBox3.Text
            sonuc = sayı1 + sayı2
            TextBox3.Text = sonuc
        Catch sorun As Exception
            MsgBox("Hata :" & sorun.Message)
        End Try


Finally bölümündeki kodlar hata olsada olmasa da gerçekleşir. Aşağıda görüldüğü gibi her iki durumda da textBox1 ve textbox2′in içeriğini sil komutunu kullandık. (textBox1.Text=””)Bu programda kullanılması fazla mantıklı değil ama örnek olsun diye kullandık. textBox1.Text=”” komutu yerine textBox1.Clear() kullanabilirsiniz.

Kod:
     Try
            Dim sayı1 = CSng(TextBox1.Text)
            Dim sayı2 = CSng(TextBox2.Text)
            Dim sonuc = TextBox3.Text
            sonuc = sayı1 + sayı2
            TextBox3.Text = sonuc
        Catch sorun As Exception
            MsgBox("Hata :" & sorun.Message)
        Finally
            TextBox1.Text = ""
            TextBox2.Text = ""
        End Try

Hata yakalama için aşağıda görüldüğü gibi On Error Resume Next’de kullanılabillir.Bu komut satırı kullanıldığında hata oluşan satırda hiçbir işlem yapılmaz.

Kod:
On Error Resume Next
        Dim sayı1 = CSng(TextBox1.Text)
        Dim sayı2 = CSng(TextBox2.Text)
        Dim sonuc = TextBox3.Text
        sonuc = sayı1 + sayı2
        TextBox3.Text = sonuc


Yukarıda görüldüğü sayi2 =CSng(textBox2.Text) satırında hata oluştuğu için o satırı işleme koymadı ve sonuç 12 çıktı. Bu yüzden On Error Resume Next bu tür örneklerde kullanılmaz. Try Catch’i kullanmalıyız.
 

'Rio

Katılımcı Üye
25 Haz 2021
567
150
C:\System32
Günaydın arkadaşlar bugün sizlere başlıkta olduğu gibi bazı olayları göstereceğim. İlk göstereceğim konu formunuzda hata yakalama mesela iki sayının toplamı örneğinde sayı ile birlikte harf girildiğinde aşağıdaki gibi hata mesajını alırız. Bu tür hatalar meydana geldiği zaman "try catch" ile hatayı mesaj kutusunda gösterebiliriz. Bu sayede programımız ani hatalar ile kapanmaz.

Örnek sayı toplamı kodum;


Kod:
 Dim sayı1 = CSng(TextBox1.Text)
        Dim sayı2 = CSng(TextBox2.Text)
        Dim sonuc = TextBox3.Text
        sonuc = sayı1 + sayı2
        TextBox3.Text = sonuc

sayı1 veya sayı2 ben sayı1'e(textbox1) yazdım fark etmez harf girdiğiniz zaman hata alır ve programınız kapanır.


Hata oluştuğu zaman catch’dan End Try kadar olan kodlar gerçekleştirilir. Program kodlarımızı try’dan sonra yazıyoruz. Catch’dan sonra ex yerine bir değişken tanımlıyoruz. Ben aşağıda görüldüğü gibi değişkene sorun adını verdim. Siz farklı bir isim verebilirsiniz. Catch’dan sonraki kodlar ise hata oluştuktan çalışır. Hata oluştuğu zaman mesaj kutusunda hatanın adını da yazsın diye değişken_ismi.message kodunu kullandım.(sorun.Message).Baş tarafına da Hata: ekledim. İkisini birleştirmek içinde & işaretini kullandım. Vb.net'te metinleri birleştirme işlemi için & işareti kullanılır. Şunu da belirtelim ekranda mesaj kutusu olarak kullanıcıya uyarı yansıtmak için MsgBox kullanılır.

Kod:
Try
            Dim sayı1 = CSng(TextBox1.Text)
            Dim sayı2 = CSng(TextBox2.Text)
            Dim sonuc = TextBox3.Text
            sonuc = sayı1 + sayı2
            TextBox3.Text = sonuc
        Catch sorun As Exception
            MsgBox("Hata :" & sorun.Message)
        End Try


Finally bölümündeki kodlar hata olsada olmasa da gerçekleşir. Aşağıda görüldüğü gibi her iki durumda da textBox1 ve textbox2′in içeriğini sil komutunu kullandık. (textBox1.Text=””)Bu programda kullanılması fazla mantıklı değil ama örnek olsun diye kullandık. textBox1.Text=”” komutu yerine textBox1.Clear() kullanabilirsiniz.

Kod:
     Try
            Dim sayı1 = CSng(TextBox1.Text)
            Dim sayı2 = CSng(TextBox2.Text)
            Dim sonuc = TextBox3.Text
            sonuc = sayı1 + sayı2
            TextBox3.Text = sonuc
        Catch sorun As Exception
            MsgBox("Hata :" & sorun.Message)
        Finally
            TextBox1.Text = ""
            TextBox2.Text = ""
        End Try

Hata yakalama için aşağıda görüldüğü gibi On Error Resume Next’de kullanılabillir.Bu komut satırı kullanıldığında hata oluşan satırda hiçbir işlem yapılmaz.

Kod:
On Error Resume Next
        Dim sayı1 = CSng(TextBox1.Text)
        Dim sayı2 = CSng(TextBox2.Text)
        Dim sonuc = TextBox3.Text
        sonuc = sayı1 + sayı2
        TextBox3.Text = sonuc


Yukarıda görüldüğü sayi2 =CSng(textBox2.Text) satırında hata oluştuğu için o satırı işleme koymadı ve sonuç 12 çıktı. Bu yüzden On Error Resume Next bu tür örneklerde kullanılmaz. Try Catch’i kullanmalıyız.
eline sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.