VB.Net'te İstisna Yönetimi (Try Catch)
⚡ Akıllı Özet
VB.Net'te istisna işleme, Try, Catch, Finally ve Throw anahtar kelimelerini kullanarak sıfıra bölme gibi çalışma zamanı hatalarını yönetir; böylece program, çalışma sırasında çökmek yerine sorunlara sorunsuz bir şekilde yanıt verebilir.
VB.Net'te İstisna Nedir?
An Istisna VB.Net'te programın yürütülmesi sırasında ortaya çıkan bir sorunu ifade eder. Beklenmedik bir durum nedeniyle ortaya çıkar. Bunun iyi bir örneği, bir bölme işlemi gerçekleştirip ardından sıfıra (0) bölmenizdir. Bir istisna ortaya çıkacak.
VB.Net'te İstisna İşleme Nedir?
İstisnalar hariç VB.Net, bir programın kontrolünü bir parçadan diğerine aktarabilirsiniz. VB.Net'te istisnalar aşağıdaki 4 anahtar sözcük kullanılarak işlenir:
| Anahtar kelime | Detay |
|---|---|
| denemek | Try bloğunun görevi, belirli bir istisnanın etkinleştirileceği kod bloğunu tanımlamaktır. Bunu bir catch blok(lar)ı takip etmelidir. |
| Yakalamak | İstisnanın yakalanması bu blokta yapılır. İstisnanın işlendiği bir istisna işleyicisidir. |
| Nihayet | Bir istisna oluşup oluşmadığına bakılmaksızın bir dizi deyimi çalıştırmak için Son olarak bloğunu kullanın. |
| Atmak | Bir problemin ortaya çıkmasından sonra bir istisna atılır. Bu Throw anahtar sözcüğünün işidir. |
Bu dört anahtar kelimenin rolleri netleştikten sonra, bunların tek bir ifade içinde nasıl bir araya geldiğini düşünün.
VB.Net'te Try Catch'in sözdizimi
VB.Net'teki Try Catch ifadeleri aşağıdaki sözdizimi kullanılarak tanımlanır:
Try [ try_Statement(s) ] [ Exit Try ] [ Catch [ exception_name [ As type ] ] [ When expression ] [ catch_Statement(s) ] [ Exit Try ] ] [ Catch ... ] [ Finally [ finally_Statement(s) ] ] End Try
Try/Catch bloğu, istisna oluşturabilecek kodu çevrelemelidir. Bu kod korumalı kod olarak bilinir. Çeşitli istisna türlerini yakalamanız gerektiğinde birden fazla catch ifadesi kullanabilirsiniz.
Try Catch ve Son olarak VB.Net'te İstisna İşleme Örneği
Try/Catch ifadeleriyle, normal program kodunuzu hata işleme sisteminden ayırabilirsiniz. Try, Catch ve Finally anahtar kelimelerini kullanarak bir istisnayı nasıl ele alacağımızı gösterelim.
) 1 Adım Yeni bir konsol uygulaması oluşturun.
) 2 Adım Bu kodu kullanın:
Module Module1 Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer) Dim answer As Integer Try answer = n1 \ n2 Catch ex As DivideByZeroException Console.WriteLine("Exception: {0}", ex) Finally Console.WriteLine("Answer is: {0}", answer) End Try End Sub Sub Main() divisionFunction(4, 0) Console.ReadKey() End Sub End Module
) 3 Adım Kodu çalıştırmak için araç çubuğundan Başlat düğmesine tıklayın. Aşağıdaki çıktıyı almalısınız:
İşte kodun ekran görüntüsü:
Açıklaması Code:
- Modül1 adlı bir modül oluşturuluyor.
- İki tamsayı bağımsız değişkeni n1 ve n2 ile partitionFunction adında bir alt prosedür oluşturma. ByVal, bağımsız değişkenlerin değerlerinin değere göre iletileceğini belirten bir VB.Net anahtar sözcüğüdür.
- Cevap adında bir tamsayı değişkeni oluşturma.
- Try/Catch bloğunun başlangıcı. İstisna oluşturabileceğini düşündüğümüz kodu bu blokla çevrelememiz gerekiyor.
- n1 ve n2 değişkenlerinin değerleri arasında bölme işlemi yapılması. Bölme işleminin sonucu değişken cevaba atanır. Bu kod, örneğin bir sayıyı sıfıra böldüğümüzde bir istisna oluşturabilir, dolayısıyla onu Try/Catch bloklarıyla çevreledik.
- DivideByZeroException adlı İstisnanın yakalanması ve oluşturulan istisna mesajının ex'e atanması.
- Ortaya çıkan İstisnanın türü/adını kullanıcıya bildirmek için konsolda bazı metinlerin yazdırılması.
- Nihayet bloğu. Bu, bir istisnanın yakalanıp yakalanmadığını çalıştıracaktır.
- Bölme işleminin sonucunu gösteren bir metni konsola yazdırma.
- Try bloğunun sonu, yani hata işleme kodunun sonu.
- BölmeFonksiyonu alt prosedürünün sonu.
- Ana alt prosedürün başlangıcı.
- DivisionFunction alt prosedürünün çağrılması/çağrılması. İki tamsayı bağımsız değişkeninin değerleri buraya iletilir. n1=4 ve n2=0 değeri. Bu, bölme işleminin 4\0, yani n1\n2 olacağı anlamına gelir.
- Kullanıcının kapatmak için harekete geçmesini bekleyen konsol penceresini duraklatma.
- Ana alt prosedürün sonu.
- Modül sonu.
VB.Net'te Kullanıcı Tanımlı İstisnalar
VB.Net, kendi istisnalarınızı tanımlamanıza olanak tanır. Kullanıcı tanımlı istisna sınıflarını ApplicationException sınıfından alabilirsiniz. Bunu bir örnekle gösterelim:
VB.Net'te Kullanıcı Tanımlı İstisna Örneği
İşte VB.Net'te kullanıcı tanımlı bir istisna örneği:
) 1 Adım Yeni bir konsol uygulaması oluşturun.
) 2 Adım Aşağıdaki kodu kullanın:
Module Module1 Public Class HeightIsZeroException : Inherits ApplicationException Public Sub New(ByVal text As String) MyBase.New(text) End Sub End Class Public Class Height Dim height As Integer = 0 Sub showHeight() If (height = 0) Then Throw (New HeightIsZeroException("Zero Height found")) Else Console.WriteLine("Height is: {0}", height) End If End Sub End Class Sub Main() Dim hght As Height = New Height() Try hght.showHeight() Catch ex As HeightIsZeroException Console.WriteLine("HeightIsZeroException: {0}", ex.Message) End Try Console.ReadKey() End Sub End Module
) 3 Adım Kodu çalıştırmak için üst çubuktan Başlat düğmesine tıklayın. Aşağıdaki çıktıyı almalısınız:
İşte kodun ekran görüntüsü:
Açıklaması Code:
- Modül1 adlı bir modül oluşturuluyor.
- HeightIsZeroException adlı bir istisna sınıfı oluşturma. Sınıf, tüm ApplicationException sınıfını miras alır.
- Yeni adlı bir alt prosedür oluşturma. Text adında bir dize argümanı alacaktır.
- Temel sınıf yapıcısını çağırmak ve ona yukarıdaki argümanı iletmek.
- Yeni alt prosedürün sonu.
- HeightIsZeroException sınıfının sonu.
- Height adında bir sınıf oluşturma. Genel erişim değiştiricisi Genel'dir, yani genel olarak erişilebilir olacaktır.
- Height adında bir tamsayı değişkeni oluşturma ve değerini 0 olarak başlatma.
- showHeight() adında bir alt prosedür oluşturma.
- Height değişkeninin değerinin 0 olup olmadığını kontrol ediyoruz. If…Then koşulunu kullandık.
- Yukarıdaki koşul doğruysa HeightIsZeroException'ı Atmak için. Bu İstisna oluştuğunda Sıfır Yükseklik Bulundu mesajı gösterilecektir.
- If koşulu doğru olmadığında çalıştırılacak Else kısmı.
- Yükseklik 0 olmadığında konsolda yazdırılacak mesaj.
- If koşulunun sonu.
- showHeight() alt prosedürünün sonu.
- Sınıfın sonu Yükseklik.
- Ana alt prosedürün başlangıcı.
- Height sınıfının bir örneği olarak Height adında bir nesne oluşturma.
- İstisna işleme bloğunun başlangıcı.
- Height sınıfında tanımlanan showHeight() alt prosedürünü çağırıyoruz. Bu metoda erişmek için bu sınıfın bir nesnesini kullandık. Bu satır bir istisnaya neden olabilir. Bu nedenle, onu bir istisna işleme koduyla çevreledik.
- HeightIsZeroException İstisnasının oluşması durumunda nesne ex olarak yakalanması.
- HeightIsZeroException yakalandığında konsolda yazdırılacak mesaj.
- İstisna işleme bloğunun sonu.
- Kullanıcının kapatmak için işlem yapmasını bekleyen konsol penceresini duraklatın.
- Ana alt prosedürün sonu.
- Modül sonu.
VB.Net'te İstisna Atın
Hata ayıklama sırasında bir nesne fırlatmayı seçebilirsiniz. Ancak, bu nesne doğrudan veya dolaylı olarak System.Exception sınıfından türetilmiş olmalıdır. Örneğin:
VB.Net'te Özel Durum Atma Örneği
Aşağıda VB.Net'te bir istisna fırlatma örneği verilmiştir:
) 1 Adım Yeni bir konsol uygulaması oluşturun.
) 2 Adım Aşağıdaki kodu kullanın:
Module Module1 Sub Main() Try Throw New ApplicationException("Throwing a custom exception") Catch ex As Exception Console.WriteLine(ex.Message) Finally Console.WriteLine("The Finally Block") End Try Console.ReadKey() End Sub End Module
) 3 Adım Kodu çalıştırmak için üst çubuktan Başlat düğmesine tıklayın. Aşağıdakileri elde etmelisiniz:
İşte kodun ekran görüntüsü:
Açıklaması Code:
- Modül1 adlı bir modül oluşturuluyor.
- Ana alt prosedürün başlangıcı.
- Hata işleme kodunun başlangıcı.
- Bir istisna nesnesi fırlatmak. Bu kod bir istisna üretebilir bu yüzden onu bir Try/Catch bloğuyla çevreledik.
- Satır bir istisna atarsa, istisnayı nesne ex olarak yakalamak.
- Oluşması durumunda istisna mesajının konsolda yazdırılması.
- Bir istisnanın yakalanıp yakalanmadığını çalıştıran Nihayet bloğu.
- Nihayet bloğu yürütüldüğünde konsolda yazdırılacak mesaj.
- İstisna işleme kodunun sonu.
- Kullanıcının konsolu kapatmak için harekete geçmesini beklerken konsolu bir süre duraklatın.
- Ana alt prosedürün sonu.
- Modül sonu.






