Guide pratique pour utiliser le bloc try/catch pour intercepter des exceptionsHow to use the try/catch block to catch exceptions

Placez les instructions de code qui peuvent déclencher ou lever une exception dans un bloc try et placez les instructions utilisées pour gérer l’exception ou les exceptions dans un ou plusieurs blocs catch sous le bloc try.Place any code statements that might raise or throw an exception in a try block, and place statements used to handle the exception or exceptions in one or more catch blocks below the try block. Chaque bloc catch inclut le type d’exception et peut contenir des instructions supplémentaires nécessaires pour gérer ce type d’exception.Each catch block includes the exception type and can contain additional statements needed to handle that exception type.

Dans l’exemple suivant, un StreamReader ouvre un fichier appelé data.txt et récupère une ligne de ce fichier.In the following example, a StreamReader opens a file called data.txt and retrieves a line from the file. Étant donné que le code peut lever une des trois exceptions, il est placé dans un bloc try.Since the code might throw any of three exceptions, it's placed in a try block. Trois blocs catch interceptent les exceptions et les gèrent en affichant les résultats dans la console.Three catch blocks catch the exceptions and handle them by displaying the results to the 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

Le Common Language Runtime (CLR) intercepte les exceptions non gérées par les blocs catch.The Common Language Runtime (CLR) catches exceptions not handled by catch blocks. Si une exception est interceptée par le CLR, il peut se produire l’un des résultats suivants selon la configuration du CLR :If an exception is caught by the CLR, one of the following results may occur depending on your CLR configuration:

  • Une boîte de dialogue Débogage s’affiche.A Debug dialog box appears.
  • Le programme s’arrête et une boîte de dialogue d’information sur l’exception s’affiche.The program stops execution and a dialog box with exception information appears.
  • Une erreur s’affiche dans le flux de sortie d’erreur standard.An error prints out to the standard error output stream.

Notes

La plupart du code peut lever une exception, et quelques exceptions comme OutOfMemoryException peuvent être levées par le CLR lui-même à tout moment.Most code can throw an exception, and some exceptions, like OutOfMemoryException, can be thrown by the CLR itself at any time. L’utilisation d’applications n’est pas obligatoire pour traiter ces exceptions, mais envisagez cette possibilité quand vous écrivez des bibliothèques destinées à l’usage d’autres utilisateurs.While applications aren't required to deal with these exceptions, be aware of the possibility when writing libraries to be used by others. Si vous souhaitez des conseils sur la définition de code dans un bloc try, consultez Bonnes pratiques pour les exceptions.For suggestions on when to set code in a try block, see Best Practices for Exceptions.

Voir aussiSee also