Guide pratique pour lever explicitement des exceptions

Vous pouvez lever explicitement une exception à l’aide de l’instruction C# throw ou Visual Basic Throw. Vous pouvez aussi lever de nouveau une exception interceptée à l’aide de l’instruction throw. En codage, il est conseillé d’ajouter des informations à une exception levée une deuxième fois pour fournir plus d’informations durant le débogage.

L’exemple de code suivant utilise un bloc try/catch pour intercepter une exception FileNotFoundException possible. À la suite du bloc try, un bloc catch intercepte l’exception FileNotFoundException et écrit un message dans la console si le fichier de données est introuvable. L’instruction suivante est throw, qui lève une nouvelle exception FileNotFoundException et ajoute des informations de texte à l’exception.

var fs = default(FileStream);
try
{
    // Opens a text tile.
    fs = new FileStream(@"C:\temp\data.txt", FileMode.Open);
    var sr = new StreamReader(fs);

    // A value is read from the file and output to the console.
    string? line = sr.ReadLine();
    Console.WriteLine(line);
}
catch (FileNotFoundException e)
{
    Console.WriteLine($"[Data File Missing] {e}");
    throw new FileNotFoundException(@"[data.txt not in c:\temp directory]", e);
}
finally
{
    if (fs != null)
        fs.Close();
}
Option Strict On

Imports System.IO

Public Class ProcessFile

    Public Shared Sub Main()
        Dim fs As FileStream = Nothing
        Try
            ' Opens a text file.
            fs = New FileStream("c:\temp\data.txt", FileMode.Open)
            Dim sr As New StreamReader(fs)

            ' A value is read from the file and output to the console.
            Dim line As String = sr.ReadLine()
            Console.WriteLine(line)
        Catch e As FileNotFoundException
            Console.WriteLine($"[Data File Missing] {e}")
            Throw New FileNotFoundException("[data.txt not in c:\temp directory]", e)
        Finally
            If fs IsNot Nothing Then fs.Close()
        End Try
    End Sub
End Class

Voir aussi