Procedura: utilizzare il blocco try/catch per l'intercettazione di eccezioni

Inserire le sezioni di codice che potrebbero generare eccezioni in un blocco try e il codice per la gestione delle eccezioni in un blocco catch. Il blocco catch consiste in una serie di istruzioni che inizia con la parola chiave catch, seguita da un tipo di eccezione e da un'operazione da eseguire.

NotaNota

Quasi tutte le righe di codice possono causare un'eccezione, in particolare le eccezioni generate nel Common Language Runtime stesso, quali OutOfMemoryException e StackOverflowException.Nella maggior parte delle applicazioni non è necessario gestire queste eccezioni, ma è opportuno tenere presente questa possibilità quando si scrivono librerie che verranno utilizzate da altri.Per suggerimenti su quando impostare codice in un blocco try, vedere Suggerimenti per gestire le eccezioni.

Nell'esempio di codice che segue viene utilizzato un blocco try/catch per intercettare una possibile eccezione. Il metodo Main contiene un blocco try con un'istruzione StreamReader che apre un file di dati denominato data.txt e scrive una stringa dal file. Il blocco try è seguito da un blocco catch che intercetta eventuali eccezioni rilevate dal blocco try.

Esempio

Imports System
Imports System.IO

Public Class ProcessFile
    Public Shared Sub Main()
        Try
            Dim sr As StreamReader = File.OpenText("data.txt")
            Console.WriteLine("The first line of this file is {0}", sr.ReadLine())
        sr.Close()
        Catch e As Exception
            Console.WriteLine("An error occurred: '{0}'", e)
        End Try
    End Sub
End Class
using System;
using System.IO;

public 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);
        }
    }
}
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();
}

Nell'esempio viene illustrata un'istruzione catch di base che intercetterà qualsiasi eccezione. In generale, una buona pratica di programmazione consiste nell'intercettare un tipo di eccezione specifico anziché utilizzare l'istruzione catch di base. Per ulteriori informazioni sull'intercettazione di eccezioni specifiche, vedere Utilizzo di eccezioni specifiche in un blocco catch.

Vedere anche

Attività

Procedura: utilizzare eccezioni specifiche in un blocco catch

Procedura: generare eccezioni in modo esplicito

Procedura: creare eccezioni definite dall'utente

Procedura: utilizzare blocchi Finally

Altre risorse

Nozioni fondamentali sulla gestione delle eccezioni