Het try/catch-blok gebruiken om uitzonderingen te vangen

Plaats code-instructies die een uitzondering in een try blok kunnen genereren of genereren, en plaats instructies die worden gebruikt voor het afhandelen van de uitzondering of uitzonderingen in een of meer catch blokken onder het try blok. Elk catch blok bevat het uitzonderingstype en kan aanvullende instructies bevatten die nodig zijn om dat uitzonderingstype te verwerken.

In het volgende voorbeeld wordt een StreamReader bestand met de naam data.txt geopend en wordt een regel opgehaald uit het bestand. Omdat de code een van de drie uitzonderingen kan genereren, wordt deze in een try blok geplaatst. Drie catch blokken vangen de uitzonderingen op en verwerken ze door de resultaten weer te geven in de console.

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();
}
using System;
using System.IO;

public class ProcessFile
{
    public static void Main()
    {
        try
        {
            using (StreamReader sr = File.OpenText("data.txt"))
            {
                Console.WriteLine($"The first line of this file is {sr.ReadLine()}");
            }
        }
        catch (FileNotFoundException e)
        {
            Console.WriteLine($"The file was not found: '{e}'");
        }
        catch (DirectoryNotFoundException e)
        {
            Console.WriteLine($"The directory was not found: '{e}'");
        }
        catch (IOException e)
        {
            Console.WriteLine($"The file could not be opened: '{e}'");
        }
    }
}
Imports System.IO

Public Class ProcessFile
    Public Shared Sub Main()
        Try
            Using sr As StreamReader = File.OpenText("data.txt")
                Console.WriteLine($"The first line of this file is {sr.ReadLine()}")
            End Using
        Catch e As FileNotFoundException
            Console.WriteLine($"The file was not found: '{e}'")
        Catch e As DirectoryNotFoundException
            Console.WriteLine($"The directory was not found: '{e}'")
        Catch e As IOException
            Console.WriteLine($"The file could not be opened: '{e}'")
        End Try
    End Sub
End Class

De Common Language Runtime (CLR) onderschept uitzonderingen die niet worden verwerkt door catch blokken. Als een uitzondering wordt afgevangen door de CLR, kan een van de volgende resultaten optreden, afhankelijk van uw CLR-configuratie:

  • Er wordt een dialoogvenster Foutopsporing weergegeven.
  • Het programma stopt de uitvoering en er wordt een dialoogvenster met uitzonderingsgegevens weergegeven.
  • Er wordt een fout afgedrukt naar de standaardstroom voor foutuitvoer.

Notitie

De meeste code kan een uitzondering genereren en sommige uitzonderingen, zoals OutOfMemoryException, kunnen op elk gewenst moment door de CLR zelf worden gegenereerd. Hoewel toepassingen niet met deze uitzonderingen te maken hebben, moet u rekening houden met de mogelijkheid bij het schrijven van bibliotheken die door anderen moeten worden gebruikt. Zie Aanbevolen procedures voor uitzonderingen voor suggesties voor het instellen van code in een try blok.

Zie ook