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:
İşte kodun ekran görüntüsü:
Kodun Açıklaması:
- 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. 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:
İşte kodun ekran görüntüsü:
Kodun Açıklaması:
- 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ğı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.
- 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
İ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:
İşte kodun ekran görüntüsü:
Kodun Açıklaması:
- 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.
Ö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.