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:
Oto zrzut ekranu kodu:
Wyjaśnienie kodu:
- Tworzenie modułu o nazwie Module1.
- 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ść.
- Tworzenie zmiennej całkowitej o nazwie odpowiedź.
- Początek bloku Try/Catch. Musimy otoczyć kod, który według nas może zgłosić wyjątek w tym bloku.
- 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.
- Przechwycenie wyjątku o nazwie DivideByZeroException i przypisanie wygenerowanego komunikatu wyjątku do ex.
- Wydrukowanie tekstu na konsoli w celu powiadomienia użytkownika o typie/nazwie zgłoszonego wyjątku.
- Blok Wreszcie. Spowoduje to wykonanie niezależnie od tego, czy zostanie przechwycony wyjątek, czy nie.
- Wyświetlanie tekstu na konsoli pokazującego wynik operacji dzielenia.
- Koniec bloku Try, czyli koniec kodu obsługi błędów.
- Koniec podprocedury dzielenia.
- Rozpoczęcie głównego podprocedury.
- 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.
- Wstrzymywanie okna konsoli w oczekiwaniu na podjęcie przez użytkownika działań w celu jego zamknięcia.
- Koniec głównego podprocedury.
- 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:
Oto zrzut ekranu kodu:
Wyjaśnienie kodu:
- Tworzenie modułu o nazwie Module1.
- Tworzenie klasy wyjątku o nazwie HeightIsZeroException. Klasa dziedziczy całą klasę ApplicationException.
- Tworzenie podprocedury o nazwie New. Przyjmie jeden argument w postaci ciągu o nazwie tekst.
- Wywołanie konstruktora klasy bazowej i przekazanie mu powyższego argumentu.
- Zakończenie nowego podprocedury.
- Koniec klasy HeightIsZeroException.
- Tworzenie klasy o nazwie Height. Jego modyfikatorem dostępu publicznego jest Publiczny, co oznacza, że będzie on publicznie dostępny.
- Tworzenie zmiennej całkowitej o nazwie Wysokość i inicjowanie jej wartości na 0.
- Tworzenie podprocedury o nazwie showHeight().
- Sprawdzanie, kiedy wartość zmiennej Height wynosi 0. Użyliśmy warunku If…Then.
- 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ść.
- Część Else, która ma zostać wykonana, gdy warunek If nie jest spełniony.
- Wiadomość do wydrukowania na konsoli, pokazująca wysokość, gdy jest ona różna od 0.
- Koniec warunku If.
- Koniec podprocedury showHeight().
- Koniec zajęć Wysokość.
- Rozpoczęcie głównego podprocedury.
- Tworzenie obiektu o nazwie Height jako instancji klasy Height.
- Początek bloku obsługi wyjątków.
- 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.
- Przechwytywanie wyjątku HeightIsZeroException jako obiektu na przykład w przypadku jego wystąpienia.
- Komunikat do wydrukowania na konsoli po przechwyceniu wyjątku HeightIsZeroException.
- Koniec bloku obsługi wyjątków.
- Wstrzymaj okno konsoli, czekając, aż użytkownik podejmie działanie w celu jego zamknięcia.
- Koniec głównego podprocedury.
- 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:
Oto zrzut ekranu kodu:
Wyjaśnienie kodu:
- Tworzenie modułu o nazwie Module1.
- Rozpoczęcie głównego podprocedury.
- Początek kodu obsługi błędów.
- Rzucanie obiektu wyjątku. Ten kod może generować wyjątek, dlatego otoczyliśmy go blokiem Try/Catch.
- Przechwytywanie wyjątku jako obiektu, np. jeśli linia zgłosi wyjątek.
- Drukowanie komunikatu o wyjątku na konsoli w przypadku jego wystąpienia.
- Blok Final uruchamiany niezależnie od tego, czy zostanie przechwycony wyjątek, czy nie.
- Komunikat do wydrukowania na konsoli po wykonaniu bloku Final.
- Koniec kodu obsługi wyjątków.
- Wstrzymaj konsolę na chwilę, czekając, aż użytkownik podejmie działanie w celu jej zamknięcia.
- Koniec głównego podprocedury.
- 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.