Obsługa wyjątków w VB.Net: przykłady obsługi typu Try & Catch

Co to jest wyjątek w VB.Net?

An Wyjątek w VB.Net odnosi się do problemu, który pojawia się podczas wykonywania programu. Jest on spowodowany nieoczekiwaną okolicznością. Dobrym przykładem jest sytuacja, gdy wykonujesz operację dzielenia, a następnie dzielisz przez zero (0). Zostanie zgłoszony wyjątek.

Co to jest obsługa wyjątków w VB.Net?

Z wyjątkami w VB.Net, możesz przenieść kontrolę nad programem z jednej części do drugiej. W VB.Net wyjątki są obsługiwane za pomocą następujących 4 słów kluczowych:

słowo kluczowe Szczegół
Próbować Zadaniem bloku Try jest zidentyfikowanie bloku kodu, dla którego zostanie aktywowany określony wyjątek. Po nim powinien nastąpić blok(i) catch.
Przyciągaj Łapanie wyjątku odbywa się w tym bloku. Jest to procedura obsługi wyjątków, w której obsługiwany jest wyjątek.
W końcu Użyj bloku Final, aby uruchomić zestaw instrukcji niezależnie od tego, czy wystąpił wyjątek, czy nie.
Rzucać Po wystąpieniu problemu zgłaszany jest wyjątek. To jest działanie słowa kluczowego Throw.

Składnia Try Catch w VB.Net

Instrukcje Try Catch w VB.Net są definiowane przy użyciu poniższej składni:

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

Blok Try/Catch powinien otaczać kod, który może zgłosić wyjątek. Kod ten nazywany jest kodem chronionym. Jeśli chcesz przechwycić różne typy wyjątków, możesz użyć wielu instrukcji catch.

Przykład obsługi wyjątków w VB.Net z Try Catch i Final

Za pomocą instrukcji Try/Catch można oddzielić zwykły kod programu od systemu obsługującego błędy. Zademonstrujmy, jak obsłużyć wyjątek przy użyciu słów kluczowych Try, Catch i Final.

Krok 1) Utwórz nową aplikację konsolową.

Krok 2) Użyj tego kodu:

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

Krok 3) Kliknij przycisk Start na pasku narzędzi, aby wykonać kod. Powinieneś otrzymać następujący wynik:

Obsługa wyjątków

Oto zrzut ekranu kodu:

Obsługa wyjątków

Wyjaśnienie kodu:

  1. Tworzenie modułu o nazwie Module1.
  2. Tworzenie podprocedury o nazwie DivisionFunction z dwoma argumentami będącymi liczbami całkowitymi n1 i n2. ByVal to słowo kluczowe VB.Net stwierdzające, że wartości argumentów będą przekazywane przez wartość.
  3. Tworzenie zmiennej całkowitej o nazwie odpowiedź.
  4. Początek bloku Try/Catch. Musimy otoczyć kod, który według nas może zgłosić wyjątek w tym bloku.
  5. Wykonywanie operacji dzielenia między wartościami zmiennych n1 i n2. Wynik operacji dzielenia jest przypisywany do zmiennej answer. Ten kod może zgłosić wyjątek, na przykład gdy dzielimy liczbę przez zero, dlatego otoczyliśmy go blokami Try/Catch.
  6. Przechwycenie wyjątku o nazwie DivideByZeroException i przypisanie wygenerowanego komunikatu wyjątku do ex.
  7. Wydrukowanie tekstu na konsoli w celu powiadomienia użytkownika o typie/nazwie zgłoszonego wyjątku.
  8. Blok Wreszcie. Spowoduje to wykonanie niezależnie od tego, czy zostanie przechwycony wyjątek, czy nie.
  9. Wyświetlanie tekstu na konsoli pokazującego wynik operacji dzielenia.
  10. Koniec bloku Try, czyli koniec kodu obsługi błędów.
  11. Koniec podprocedury dzielenia.
  12. Rozpoczęcie głównego podprocedury.
  13. Wywołanie/inwokacja podprocedury divisionFunction. Wartości dwóch argumentów całkowitych są tutaj przekazywane. Wartość n1=4 i n2=0. Oznacza to, że operacja dzielenia będzie wynosić 4\0, czyli n1\n2.
  14. Wstrzymywanie okna konsoli w oczekiwaniu na podjęcie przez użytkownika działań w celu jego zamknięcia.
  15. Koniec głównego podprocedury.
  16. Koniec modułu.

Wyjątki zdefiniowane przez użytkownika w VB.Net

VB.Net umożliwia definiowanie własnych wyjątków. Klasy wyjątków zdefiniowane przez użytkownika można uzyskać z klasy ApplicationException. Pokażmy to na przykładzie:

Przykład wyjątku zdefiniowanego przez użytkownika w VB.Net

Oto przykład wyjątku zdefiniowanego przez użytkownika w VB.Net:

Krok 1) Utwórz nową aplikację konsolową.

Krok 2) Użyj następującego kodu:

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

Krok 3) Kliknij przycisk Start na górnym pasku, aby wykonać kod. Powinieneś otrzymać następujący wynik:

Wyjątek zdefiniowany przez użytkownika

Oto zrzut ekranu kodu:

Wyjątek zdefiniowany przez użytkownika

Wyjaśnienie kodu:

  1. Tworzenie modułu o nazwie Module1.
  2. Tworzenie klasy wyjątku o nazwie HeightIsZeroException. Klasa dziedziczy całą klasę ApplicationException.
  3. Tworzenie podprocedury o nazwie New. Przyjmie jeden argument w postaci ciągu o nazwie tekst.
  4. Wywołanie konstruktora klasy bazowej i przekazanie mu powyższego argumentu.
  5. Zakończenie nowego podprocedury.
  6. Koniec klasy HeightIsZeroException.
  7. Tworzenie klasy o nazwie Height. Jego modyfikatorem dostępu publicznego jest Publiczny, co oznacza, że ​​będzie on publicznie dostępny.
  8. Tworzenie zmiennej całkowitej o nazwie Wysokość i inicjowanie jej wartości na 0.
  9. Tworzenie podprocedury o nazwie showHeight().
  10. Sprawdzanie, kiedy wartość zmiennej Height wynosi 0. Użyliśmy warunku If…Then.
  11. Aby zgłosić wyjątek HeightIsZeroException, jeśli powyższy warunek jest spełniony. W przypadku zgłoszenia wyjątku zostanie wyświetlony komunikat Znaleziono zerową wysokość.
  12. Część Else, która ma zostać wykonana, gdy warunek If nie jest spełniony.
  13. Wiadomość do wydrukowania na konsoli, pokazująca wysokość, gdy jest ona różna od 0.
  14. Koniec warunku If.
  15. Koniec podprocedury showHeight().
  16. Koniec zajęć Wysokość.
  17. Rozpoczęcie głównego podprocedury.
  18. Tworzenie obiektu o nazwie Height jako instancji klasy Height.
  19. Początek bloku obsługi wyjątków.
  20. Wywołanie podprocedury showHeight() zdefiniowanej w klasie Height. Aby uzyskać dostęp do tej metody, użyliśmy obiektu tej klasy. Ta linia może spowodować wyjątek. Dlatego otoczyliśmy go kodem obsługi wyjątków.
  21. Przechwytywanie wyjątku HeightIsZeroException jako obiektu na przykład w przypadku jego wystąpienia.
  22. Komunikat do wydrukowania na konsoli po przechwyceniu wyjątku HeightIsZeroException.
  23. Koniec bloku obsługi wyjątków.
  24. Wstrzymaj okno konsoli, czekając, aż użytkownik podejmie działanie w celu jego zamknięcia.
  25. Koniec głównego podprocedury.
  26. Koniec modułu.

Zgłoś wyjątek w VB.Net

W obsłudze wyjątków możesz wybrać rzucenie obiektu. Jednak obiekt musi pochodzić od System. Klasa wyjątku, bezpośrednio lub pośrednio. Na przykład:

Przykład wyjątku zgłoszenia w VB.Net

Poniżej znajduje się przykład wyjątku rzutu w VB.Net:

Krok 1) Utwórz nową aplikację konsolową.

Krok 2) Użyj następującego kodu:

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

Krok 3) Kliknij przycisk Start na górnym pasku, aby wykonać kod. Powinieneś otrzymać następujące informacje:

Zgłoś wyjątek

Oto zrzut ekranu kodu:

Zgłoś wyjątek

Wyjaśnienie kodu:

  1. Tworzenie modułu o nazwie Module1.
  2. Rozpoczęcie głównego podprocedury.
  3. Początek kodu obsługi błędów.
  4. Rzucanie obiektu wyjątku. Ten kod może generować wyjątek, dlatego otoczyliśmy go blokiem Try/Catch.
  5. Przechwytywanie wyjątku jako obiektu, np. jeśli linia zgłosi wyjątek.
  6. Drukowanie komunikatu o wyjątku na konsoli w przypadku jego wystąpienia.
  7. Blok Final uruchamiany niezależnie od tego, czy zostanie przechwycony wyjątek, czy nie.
  8. Komunikat do wydrukowania na konsoli po wykonaniu bloku Final.
  9. Koniec kodu obsługi wyjątków.
  10. Wstrzymaj konsolę na chwilę, czekając, aż użytkownik podejmie działanie w celu jej zamknięcia.
  11. Koniec głównego podprocedury.
  12. Koniec modułu.

Podsumowanie

  • Wyjątek odnosi się do problemu, który pojawia się podczas wykonywania programu i jest spowodowany nieoczekiwanymi okolicznościami.
  • Jeśli podejrzewasz, że jakiś kod wygeneruje wyjątek, otocz go blokiem Try/Catch.
  • Blok Final następuje po bloku Try/Catch i jest wykonywany niezależnie od tego, czy przechwycono wyjątek, czy nie.
  • VB.Net pozwala nam tworzyć niestandardowe wyjątki.