Sdílet prostřednictvím


Postupy: Použití bloku Try/Catch pro zachycení výjimek

Umístěte části kódu, které mohou vyvolat výjimky do bloku try a umístěte kód, který zpracovává výjimky do bloku catch. Blok catch je řada příkazů začínající klíčovým slovem catch, následovaném typem výjimky a akcí, která má být provedena.

PoznámkaPoznámka

Téměř každý řádek kódu může způsobit výjimku, zejména výjimky, které jsou vyvolány modulem CLR (Common Language Runtime), jako je například OutOfMemoryException and StackOverflowException. Většina aplikací se nemusí zabývat těmito výjimkami, ale měli byste na to brát ohled při psaní knihoven pro použití dalšími aplikacemi.Doporučení týkající se informací, kdy umístit kód do bloku try naleznete v tématu Doporučené postupy pro zpracování výjimek.

Následující příklad kódu používá blok try/catch k zachycení možné výjimky. Metoda Main obsahuje blok try s příkazem StreamReader, který otevře datový soubor s názvem data.txt a vypíše řetězec ze souboru. Za blokem try následuje blok catch, který zachytí jakoukoli výjimku vyplývající z bloku try.

Příklad

Imports System
Imports System.IO

Public Class ProcessFile
    Public Shared Sub Main()
        Try
            Dim sr As StreamReader = File.OpenText("data.txt")
            Console.WriteLine("The first line of this file is {0}", sr.ReadLine())
        sr.Close()
        Catch e As Exception
            Console.WriteLine("An error occurred: '{0}'", e)
        End Try
    End Sub
End Class
using System;
using System.IO;

public class ProcessFile
{
    public static void Main()
    {
        try
        {
            StreamReader sr = File.OpenText("data.txt");
            Console.WriteLine("The first line of this file is {0}", sr.ReadLine());
        sr.Close();
        }
        catch (Exception e)
        {
            Console.WriteLine("An error occurred: '{0}'", e);
        }
    }
}
using namespace System;
using namespace System::IO;

public ref class ProcessFile
{
public:
    static void Main()
    {
        try
        {
            StreamReader^ sr = File::OpenText("data.txt");
            Console::WriteLine("The first line of this file is {0}", sr->ReadLine());
        sr->Close();
        }
        catch (Exception^ e)
        {
            Console::WriteLine("An error occurred: '{0}'", e);
        }
    }
};

int main()
{
    ProcessFile::Main();
}

Tento příklad ukazuje základní příkaz catch, který zachytí jakoukoli výjimku. Obecně je dobrým programovacím postupem zachytit specifický typ výjimky spíše než použití základního příkazu catch. Další informace o zachycování specifických výjimek naleznete v tématu Používání specifických výjimek v bloku catch.

Viz také

Úkoly

Postupy: Použít specifické výjimky v bloku Catch

Postupy: Explicitně vyvolané výjimky

Postupy: Vytvořit uživatelem definované výjimky

Postupy: Použití bloku Finally.

Další zdroje

Základy zpracování výjimek