Condividi tramite


Come usare il blocco try/catch per intercettare le eccezioni

Inserire qualsiasi istruzione di codice che potrebbe sollevare o generare un'eccezione in un blocco try e inserire istruzioni usate per gestire l'eccezione o le eccezioni in uno o più blocchi catch seguenti al blocco try. Ogni catch blocco include il tipo di eccezione e può contenere istruzioni aggiuntive necessarie per gestire tale tipo di eccezione.

Nell'esempio seguente, un file denominato StreamReader viene aperto e si recupera una riga dal file. Poiché il codice potrebbe generare una qualsiasi di tre eccezioni, viene inserito in un try blocco. Tre catch blocchi intercettano le eccezioni e le gestiscono visualizzando i risultati nella 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

Common Language Runtime (CLR) rileva le eccezioni non gestite dai catch blocchi. Se un'eccezione viene intercettata da CLR, è possibile che si verifichi uno dei risultati seguenti a seconda della configurazione CLR:

  • Viene visualizzata una finestra di dialogo Debug .
  • Il programma arresta l'esecuzione e viene visualizzata una finestra di dialogo con informazioni sull'eccezione.
  • Un errore viene inviato al flusso di output degli errori standard.

Annotazioni

La maggior parte del codice può generare un'eccezione e alcune eccezioni, ad OutOfMemoryExceptionesempio , possono essere generate da CLR stesso in qualsiasi momento. Anche se le applicazioni non sono necessarie per gestire queste eccezioni, tenere presente la possibilità di scrivere librerie da usare da altri utenti. Per suggerimenti su quando impostare il codice in un try blocco, vedere Procedure consigliate per le eccezioni.

Vedere anche