Delen via


Het try/catch-blok gebruiken om uitzonderingen te vangen

Plaats code die een uitzondering in een try blok kan veroorzaken, 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 uit het bestand opgehaald. 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 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 verschijnt een Debug-dialoogvenster.
  • Het programma stopt de uitvoering en er wordt een dialoogvenster met uitzonderingsgegevens weergegeven.
  • Een fout wordt afgedrukt naar de standaardstroom voor foutuitvoer.

Opmerking

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. Voor suggesties over wanneer code in een try blok moet worden geplaatst, zie Best practices voor uitzonderingen.

Zie ook