Zpracování výjimek ve VB.Net: Příklady zpracování Try & Catch

Co je výjimka ve VB.Net?

An Výjimka ve VB.Net odkazuje na problém, který nastane během provádění programu. Způsobí to nečekaná okolnost. Dobrým příkladem je, když provádíte operaci dělení a poté dělíte nulou (0). Bude vznesena výjimka.

Co je zpracování výjimek ve VB.Net?

S výjimkami v VB.Net, můžete přenést ovládání programu z jedné části do druhé. Ve VB.Net se výjimky zpracovávají pomocí následujících 4 klíčových slov:

Klíčové slovo Detail
Zkusit Úkolem bloku Try je identifikovat blok kódu, pro který bude aktivována konkrétní výjimka. Měl by následovat blok(y) záchytu.
zápas V tomto bloku se provádí zachycení výjimky. Je to obslužná rutina výjimek, ve které se zpracovává výjimka.
Konečně Blok Konečně použijte ke spuštění sady příkazů, zda došlo k výjimce nebo ne.
Házet Výjimka je vyvolána po výskytu problému. Toto je dílo klíčového slova Throw.

Syntaxe Try Catch ve VB.Net

Příkazy Try Catch ve VB.Net jsou definovány pomocí níže uvedené syntaxe:

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 by měl obklopovat kód, který může vyvolat výjimku. Tento kód je známý jako chráněný kód. Pokud potřebujete zachytit různé typy výjimek, můžete použít více příkazů catch.

Příklad zpracování výjimek ve VB.Net s Try Catch a Konečně

Pomocí příkazů Try/Catch můžete oddělit svůj běžný programový kód od systému pro zpracování chyb. Ukažme si, jak zpracovat výjimku pomocí klíčových slov Try, Catch a Final.

Krok 1) Vytvořte novou konzolovou aplikaci.

Krok 2) Použijte tento kód:

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) Kliknutím na tlačítko Start na panelu nástrojů spustíte kód. Měli byste získat následující výstup:

Manipulace s výjimkami

Zde je snímek obrazovky kódu:

Manipulace s výjimkami

Vysvětlení kódu:

  1. Vytvoření modulu s názvem Module1.
  2. Vytvoření dílčí procedury s názvem divisionFunction se dvěma celočíselnými argumenty n1 a n2. ByVal je klíčové slovo VB.Net, které uvádí, že hodnoty argumentů budou předány hodnotou.
  3. Vytvoření celočíselné proměnné s názvem answer.
  4. Začátek bloku Try/Catch. Musíme obklopit kód, o kterém se domníváme, že může vyvolat výjimku s tímto blokem.
  5. Provedení operace dělení mezi hodnotami proměnných n1 a n2. Výsledek operace dělení je přiřazen k proměnné odpověď. Tento kód může způsobit výjimku, například když vydělíme číslo nulou, a proto jsme ho obklopili bloky Try/Catch.
  6. Zachycení výjimky s názvem DivideByZeroException a přiřazení vygenerované zprávy o výjimce ex.
  7. Vytištění nějakého textu na konzoli, aby byl uživatel upozorněn na typ/název výjimky, která byla vyvolána.
  8. Blok Konečně. Tím se provede, zda je výjimka zachycena nebo ne.
  9. Tisk nějakého textu na konzole zobrazující výsledek operace dělení.
  10. Konec bloku Try, tedy konec kódu pro zpracování chyb.
  11. Konec dílčího postupu dělení Funkce.
  12. Zahájení hlavního dílčího postupu.
  13. Volání/vyvolání dílčího postupu divisionFunction. Zde jsou předány hodnoty dvou celočíselných argumentů. Hodnota n1=4 an2=0. To znamená, že operace dělení bude 4\0, tedy n1\n2.
  14. Pozastavení okna konzoly čekání, až uživatel provede akci k jeho zavření.
  15. Konec hlavního dílčího postupu.
  16. Konec modulu.

Uživatelem definované výjimky ve VB.Net

VB.Net vám umožňuje definovat vlastní výjimky. Uživatelsky definované třídy výjimek můžete získat z třídy ApplicationException. Ukažme si to na příkladu:

Příklad uživatelem definované výjimky ve VB.Net

Zde je příklad uživatelem definované výjimky ve VB.Net:

Krok 1) Vytvořte novou konzolovou aplikaci.

Krok 2) Použijte následující kód:

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) Kliknutím na tlačítko Start v horní liště spustíte kód. Měli byste získat následující výstup:

Uživatelem definovaná výjimka

Zde je snímek obrazovky kódu:

Uživatelem definovaná výjimka

Vysvětlení kódu:

  1. Vytvoření modulu s názvem Module1.
  2. Vytvoření třídy výjimky s názvem HeightIsZeroException. Třída zdědí všechny třídy ApplicationException.
  3. Vytvoření dílčího postupu s názvem Nový. Bude to trvat jeden řetězcový argument s názvem text.
  4. Volání konstruktoru základní třídy a předání výše uvedeného argumentu.
  5. Konec nového dílčího postupu.
  6. Konec třídy HeightIsZeroException.
  7. Vytvoření třídy s názvem Výška. Jeho modifikátor veřejného přístupu je Public, což znamená, že bude veřejně přístupný.
  8. Vytvoření celočíselné proměnné s názvem Výška a inicializace její hodnoty na 0.
  9. Vytvoření dílčí procedury s názvem showHeight().
  10. Kontrola, kdy je hodnota proměnné Výška 0. Použili jsme podmínku If…Then.
  11. Chcete-li vyvolat výjimku HeightIsZeroException, pokud platí výše uvedená podmínka. Při vyvolání této výjimky se zobrazí zpráva Zero Height Found.
  12. Část Else, která se má provést, když podmínka If není pravdivá.
  13. Zpráva k vytištění na konzole zobrazující výšku, když není 0.
  14. Konec podmínky If.
  15. Konec dílčí procedury showHeight().
  16. Konec třídy Výška.
  17. Zahájení hlavního dílčího postupu.
  18. Vytvoření objektu s názvem Height jako instance třídy Height.
  19. Začátek bloku zpracování výjimek.
  20. Vyvolání dílčí procedury showHeight() definované ve třídě Height. Pro přístup k této metodě jsme použili objekt této třídy. Tento řádek může vést k výjimce. Proto jsme jej obklopili kódem pro zpracování výjimek.
  21. Zachycení výjimky HeightIsZeroException jako objektu ex v případě, že k ní dojde.
  22. Zpráva, která se má vytisknout na konzole, když je zachycena výjimka HeightIsZeroException.
  23. Konec bloku zpracování výjimek.
  24. Pozastavte okno konzoly a počkejte, až uživatel provede akci k jeho zavření.
  25. Konec hlavního dílčího postupu.
  26. Konec modulu.

Vyhození výjimky ve VB.Net

Při zpracování výjimek si můžete vybrat vyhození objektu. Objekt však musí být odvozen od System. Exceptionclass, přímo nebo nepřímo. Například:

Příklad Throw Exception ve VB.Net

Níže je uveden příklad výjimky vyvolání ve VB.Net:

Krok 1) Vytvořte novou konzolovou aplikaci.

Krok 2) Použijte následující kód:

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) Kliknutím na tlačítko Start v horní liště spustíte kód. Měli byste získat následující:

Hodit výjimku

Zde je snímek obrazovky kódu:

Hodit výjimku

Vysvětlení kódu:

  1. Vytvoření modulu s názvem Module1.
  2. Zahájení hlavního dílčího postupu.
  3. Začátek kódu pro zpracování chyb.
  4. Vyhození objektu výjimky. Tento kód může generovat výjimku, proto jsme jej obklopili blokem Try/Catch.
  5. Zachycení výjimky jako objektu ex, pokud řádek vyvolá výjimku.
  6. Tisk zprávy o výjimce na konzole v případě, že k ní dojde.
  7. Blok Konečně se spustí, zda je výjimka zachycena nebo ne.
  8. Zpráva, která se má vytisknout na konzole po provedení bloku Konečně.
  9. Konec kódu zpracování výjimek.
  10. Pozastavte konzolu na chvíli a počkejte, až uživatel provede akci a zavře ji.
  11. Konec hlavního dílčího postupu.
  12. Konec modulu.

Shrnutí

  • Výjimka se týká problému, který nastane během provádění programu způsobený neočekávanou okolností.
  • Pokud máte podezření, že nějaký kód vygeneruje výjimku, obklopte jej blokem Try/Catch.
  • Blok Konečně následuje po bloku Try/Catch a provede se, zda je výjimka zachycena nebo ne.
  • VB.Net nám umožňuje vytvářet vlastní výjimky.

Shrňte tento příspěvek takto: