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.

  • 🔍 istisna: Bir işlemin yürütülmesi sırasında ortaya çıkan bir sorun, örneğin bir sayıyı sıfıra bölmek gibi.
  • 🛡️ Yakalamaya çalış: `try` bloğu riskli kodu sarmalar; `catch` bloğu ise bu bloğun ortaya çıkardığı istisnayı ele alır.
  • Sonunda: Finally bloğu, bir istisna oluşup oluşmamasına bakılmaksızın çalışır.
  • 🚦 Atmak: Throw, System.Exception sınıfından türetilmiş bir istisna nesnesi fırlatır.
  • 🧩 Özel istisnalar: Kendi istisna türlerinizi tanımlamak için ApplicationException'dan miras alın.
  • 🤖 Yapay zekâ yardımı: GitHub Copilot ve IntelliCode Yazarken Try Catch blokları oluşturun.

VB.Net'te İstisna Yönetimi

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:

VB.Net Try Catch Finally konsol çıktısı, yakalanan DivideByZeroException hatasını göstermektedir.

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

Visual Studio'da gösterilen VB.Net Try Catch Finally örnek kodu.

Açıklaması Code:

  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. 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:

VB.Net kullanıcı tanımlı HeightIsZeroException mesajı konsola yazdırılıyor.

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

Visual Studio'da VB.Net kullanıcı tanımlı istisna sınıfı örnek kodu

Açıklaması Code:

  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ğı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.
  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

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:

VB.Net throw ifadesinin konsol çıktısı, özel istisna mesajını gösteriyor.

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

VB.Net'te Try Catch Finally ile istisna fırlatma örneği kodu

Açıklaması Code:

  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.

SSS

Evet. Bir Try ifadesi, bir Finally bloğu içerdiği sürece Catch bloğu olmadan da geçerlidir. Bu Try Finally biçimi, temizleme kodunu çalıştırır ancak istisnayı kendisi ele almaz.

Evet. Farklı istisna türlerini ele almak için birkaç Catch bloğu listeleyin. Bunları en spesifikten en az spesifik olana doğru sıralayın, çünkü VB.Net bunları sırayla kontrol eder ve ilk eşleşmeyi kullanır.

Neredeyse her zaman. Bir istisna yakalanıp yakalanmadığına bakılmaksızın ve hatta Return ifadesinden sonra bile Finally komutu yürütülür. Yalnızca End ifadesinde veya StackOverflowException durumunda atlanır.

`throw` mevcut istisnayı yeniden fırlatır ve orijinal yığın izini korur. trace. Ex fırlatmak yığın izini sıfırlar. tracHatanın gerçekte nerede başladığını gizleyerek, mevcut satıra e harfini ekleyin. Düz Throw seçeneğini tercih edin.

Sözdizimi hatası, program çalışmadan önce derleyici tarafından yakalanır. İstisna ise çalışma zamanında, yürütme sırasında oluşur ve Try Catch bloğu ile ele alınabilir.

Sık karşılaşılan hatalar arasında DivideByZeroException, NullReferenceException, IndexOutOfRangeException, FormatException ve OverflowException bulunur. Bunların hepsi System.Exception sınıfından miras alır ve ayrı ayrı yakalanabilir.

Evet. GitHub Yardımcı Pilotu Basit bir İngilizce yorumu tam bir Try Catch Finally bloğuna dönüştürür ve doğru istisna türünü önerir. Oluşturulan işleyiciyi her zaman gözden geçirin.

Evet. Visual Studio IntellistudioCode Binlerce açık kaynak projesinden öğrenilen bilgiler sayesinde, yakalama maddeleri ve istisna türleri için bağlamı dikkate alan, satır sonu tamamlama özelliği sunar.

Bu yazıyı şu şekilde özetleyin: