Způsob zachycení výjimek v jazyce Visual Basic 2005 nebo Visual Basic .NET

Microsoft Visual C# 2005 a Microsoft Visual C# .NET verzi tohoto článku v tématu 308345 .


Microsoft Visual Basic 6.0 verzi tohoto článku naleznete v 191474 .

Souhrn

Lov a zacházení s výjimkami je standardní programovací úlohy. Tento článek ukazuje, jak použít konstrukce try-catch-finally blok zachytit výjimku. Konstrukce try-catch-finally blok je "Obálka" umístěných kolem jakýkoli kód, kde existuje možnost výjimky.

Konstrukce try-catch-finally blok se skládá z následujících částí:
  • Jakýkoli kód, který může vyvolat výjimku je umístěn uvnitř bloku try .
  • Pokud je vyvolána výjimka, je zadaný blok catch a program můžete provést příslušnou operace obnovení nebo upozornit uživatele.
  • Kód v nakonec blok je vždy spuštěn a lze provést vyčištění po došlo k výjimce. Finally blok je volitelné.

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a aktualizace service Pack, které potřebujete:
  • Microsoft Windows Server 2003, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server nebo Microsoft Windows NT 4.0 Server
  • Microsoft Visual Basic 2005 nebo Microsoft Visual Basic .NET

Podrobný příklad

  1. Vytvoření nové aplikace konzoly v jazyce Visual Basic 2005 nebo Visual Basic .NET.
  2. V proceduře Sub Main vložte ukázku kódu, který následuje. Vzorku deklaruje a inicializuje tři proměnné, ve kterém způsobí chybu, inicializace "k".
    ' This code generates an exception.Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line.

  3. Stisknutím klávesy F5 zobrazíte výjimku.
  4. Příkaz try-catch okolo kódu k zachycení chyby obtékání. Následující kód zachycuje všechny chyby, které jsou vyvolány v kódu a zobrazí obecná chybová zpráva. Nahraďte následující kód v proceduře Sub Main kód.
    ' This code shows how to catch an exception.Try
    Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.
    Catch
    Console.WriteLine("An error occurred.")
    End Try
  5. Stisknutím kláves CTRL + F5 ke spuštění projektu. Všimněte si, že se zobrazí chybová zpráva z bloku catch .
  6. Pokud některé vyčištění nebo následné zpracování je třeba provést bez ohledu na chybu, použijte nakonec část konstrukce try-catch-finally prohlášení. Kód nakonec část příkazu je vždy spuštěn, bez ohledu na výjimky. Následující kód zobrazuje "Toto prohlášení je vždy vytištěno" v konzole, i když nedošlo k žádné chybě. Nahraďte následující kód Sub Main kód.
    ' This code shows how to catch an exception.Try
    Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.

    Catch
    Console.WriteLine("An error occurred.")
    Finally ' This section is performed regardless of the above processing.
    Console.WriteLine()
    Console.WriteLine("This statement is always printed")
    End Try

  7. Stisknutím kláves CTRL + F5 ke spuštění projektu.
  8. Objekt výjimky může pomocí příkazu catch načíst podrobnosti o výjimce. Výjimka má řadu vlastností, které vám mohou pomoci identifikovat, Nápověda, zdroje nebo dokonce zásobníku informace o výjimce. Tyto informace mohou být velmi užitečné pro sledování dolů původní příčině výjimky nebo poskytnout lepší vysvětlení jeho zdroje. Následující ukázka výjimku zachytí a poskytuje konkrétní chybovou zprávu. Před, může nahradit kód v proceduře Sub Main s následujícím kódem.

    Příklad 1
    ' This code shows how to catch an exception.Try
    Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.

    Catch e As Exception ' Perform code that deals with the exception
    ' or informs the user what occurred.
    Console.WriteLine("The following error occurred:")
    Console.WriteLine(e.ToString()) ' Print the error message to the user.

    Finally ' This section is performed regardless of the above processing.
    Console.WriteLine()
    Console.WriteLine("This statement is always printed")
    End Try

    Příklad 2
    ' This code shows how to catch an exception.Try
    Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.

    Catch e As Exception ' Perform code that deals with the exception
    ' or informs the user what occurred.
    Console.WriteLine("The following error occurred:")
    Console.WriteLine( e.Message ) ' Print the error message.
    Console.WriteLine( e.Source ) ' Name of application or object
    ' that caused the error
    Console.WriteLine( e.StackTrace ) ' String that contains the stack
    ' trace for this exception
    Finally ' This section is performed regardless of the above processing.
    Console.WriteLine()
    Console.WriteLine("This statement is always printed")
    End Try

  9. Až do tohoto okamžiku se zabývat konkrétním případě nespecifická výjimky. Však pokud předem víte, jaký druh výjimky bude dojít, můžete zachytit výjimky předpokládaných a odpovídajícím způsobem je zpracovat. Můžete zachytit všechny ostatní výjimky a vypořádat se s nimi i více Catch bloky. Následující příklad ukazuje to.
    Module Module1Sub Main()

    ' Attempt to do some file processing.
    ' This can cause a number of potential exceptions.
    ' Note that you can use the specific exceptions to get extra information about that exception,
    ' but this example focuses on showing control execution for those exceptions.

    Try
    File.Create("c:/temp/test.txt") ' Can fail for a number of reasons

    Catch ioe As System.IO.IOException ' This error may occur if the Temp folder does not exist.
    Console.WriteLine("An IO error occurred. The c:\temp folder does not exist")

    Catch se As System.Security.SecurityException ' You do not have the appropriate permission
    ' to take this action.
    Console.WriteLine("You don't have the security permissions to take this action!")

    Catch e As Exception ' Catch all other exceptions.
    Console.WriteLine( e.ToString() ) ' Print the standard exception information.
    End Try
    End Sub
    End Module
    Konfigurace počítače se může lišit, vzorek v tomto kroku může nebo nesmí vyvolat výjimku. Pokud chcete vynutit výjimku IO změňte cestu k souboru do složky, která neexistuje v počítači.

Odkazy

Další informace naleznete v tématu Microsoft rozhraní.NET Framework Software Development Kit (SDK).
Vlastnosti

ID článku: 301283 - Poslední kontrola: 19. 1. 2017 - Revize: 1

Váš názor