VB.Net'te İstisna İşleme: Try & Catch İşleme Örnekleri

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.

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 deyimleriyle sıradan program kodunuzu hata işleme Sisteminden ayırabilirsiniz. Try, Catch ve Nihayet anahtar sözcüklerini kullanarak bir istisnanın nasıl ele alınacağını 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:

İstisna işleme

İşte kodun ekran görüntüsü:

İstisna işleme

Kodun Açıklaması:

  1. Modül1 adlı bir modül oluşturuluyor.
  2. İ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.
  3. Cevap adında bir tamsayı değişkeni oluşturma.
  4. Try/Catch bloğunun başlangıcı. İstisna oluşturabileceğini düşündüğümüz kodu bu blokla çevrelememiz gerekiyor.
  5. 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.
  6. DivideByZeroException adlı İstisnanın yakalanması ve oluşturulan istisna mesajının ex'e atanması.
  7. Ortaya çıkan İstisnanın türü/adını kullanıcıya bildirmek için konsolda bazı metinlerin yazdırılması.
  8. Nihayet bloğu. Bu, bir istisnanın yakalanıp yakalanmadığını çalıştıracaktır.
  9. Bölme işleminin sonucunu gösteren bir metni konsola yazdırma.
  10. Try bloğunun sonu, yani hata işleme kodunun sonu.
  11. BölmeFonksiyonu alt prosedürünün sonu.
  12. Ana alt prosedürün başlangıcı.
  13. 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.
  14. Kullanıcının kapatmak için harekete geçmesini bekleyen konsol penceresini duraklatma.
  15. Ana alt prosedürün sonu.
  16. Modül sonu.

VB.Net'te Kullanıcı Tanımlı İstisnalar

VB.Net kendi istisnalarınızı tanımlamanıza olanak tanır. ApplicationException sınıfından kullanıcı tanımlı istisna sınıflarını alabilirsiniz. Bunu bir örnekle gösterelim:

VB.Net'te Kullanıcı Tanımlı İstisna Örneği

İşte VB.Net'teki kullanıcı tanımlı istisnanın bir ö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:

Kullanıcı Tanımlı İstisna

İşte kodun ekran görüntüsü:

Kullanıcı Tanımlı İstisna

Kodun Açıklaması:

  1. Modül1 adlı bir modül oluşturuluyor.
  2. HeightIsZeroException adlı bir istisna sınıfı oluşturma. Sınıf, tüm ApplicationException sınıfını miras alır.
  3. Yeni adlı bir alt prosedür oluşturma. Text adında bir dize argümanı alacaktır.
  4. Temel sınıf yapıcısını çağırmak ve ona yukarıdaki argümanı iletmek.
  5. Yeni alt prosedürün sonu.
  6. HeightIsZeroException sınıfının sonu.
  7. Height adında bir sınıf oluşturma. Genel erişim değiştiricisi Genel'dir, yani genel olarak erişilebilir olacaktır.
  8. Height adında bir tamsayı değişkeni oluşturma ve değerini 0 olarak başlatma.
  9. showHeight() adında bir alt prosedür oluşturma.
  10. Height değişkeninin değerinin 0 olup olmadığını kontrol ediyoruz. If…Then koşulunu kullandık.
  11. Yukarıdaki koşul doğruysa HeightIsZeroException'ı Atmak için. Bu İstisna oluştuğunda Sıfır Yükseklik Bulundu mesajı gösterilecektir.
  12. If koşulu doğru olmadığında çalıştırılacak Else kısmı.
  13. Yükseklik 0 olmadığında konsolda yazdırılacak mesaj.
  14. If koşulunun sonu.
  15. showHeight() alt prosedürünün sonu.
  16. Sınıfın sonu Yükseklik.
  17. Ana alt prosedürün başlangıcı.
  18. Height sınıfının bir örneği olarak Height adında bir nesne oluşturma.
  19. İstisna işleme bloğunun başlangıcı.
  20. Height sınıfında tanımlanan showHeight() alt prosedürünü çağırma. 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.
  21. HeightIsZeroException İstisnasının oluşması durumunda nesne ex olarak yakalanması.
  22. HeightIsZeroException yakalandığında konsolda yazdırılacak mesaj.
  23. İstisna işleme bloğunun sonu.
  24. Kullanıcının kapatmak için işlem yapmasını bekleyen konsol penceresini duraklatın.
  25. Ana alt prosedürün sonu.
  26. Modül sonu.

VB.Net'te İstisna Atın

İstisna işlemede bir nesneyi atmayı seçebilirsiniz. Ancak nesnenin System'den türetilmesi gerekir. İstisna sınıfı, doğrudan veya dolaylı olarak. Örneğin:

VB.Net'te Özel Durum Atma Örneği

Aşağıda VB.Net'teki throw istisnasının bir ö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:

İstisna At

İşte kodun ekran görüntüsü:

İstisna At

Kodun Açıklaması:

  1. Modül1 adlı bir modül oluşturuluyor.
  2. Ana alt prosedürün başlangıcı.
  3. Hata işleme kodunun başlangıcı.
  4. Bir istisna nesnesi fırlatmak. Bu kod bir istisna üretebilir bu yüzden onu bir Try/Catch bloğuyla çevreledik.
  5. Satır bir istisna atarsa, istisnayı nesne ex olarak yakalamak.
  6. Oluşması durumunda istisna mesajının konsolda yazdırılması.
  7. Bir istisnanın yakalanıp yakalanmadığını çalıştıran Nihayet bloğu.
  8. Nihayet bloğu yürütüldüğünde konsolda yazdırılacak mesaj.
  9. İstisna işleme kodunun sonu.
  10. Kullanıcının konsolu kapatmak için harekete geçmesini beklerken konsolu bir süre duraklatın.
  11. Ana alt prosedürün sonu.
  12. Modül sonu.

ÖZET

  • İstisna, programın yürütülmesi sırasında beklenmedik bir durum nedeniyle ortaya çıkan bir sorunu ifade eder.
  • Bazı kodların istisna oluşturacağından şüpheleniyorsanız, bunu bir Try/Catch bloğuyla çevreleyin.
  • Nihayet bloğu, Try/Catch bloğundan sonra gelir ve bir istisna yakalansa da yakalanmasa da çalıştırılır.
  • VB.Net özel istisnalar oluşturmamıza olanak tanır.