Практическое руководство. Использование пробного блока и блока перехвата для перехвата исключений

Разместите части кода, которые могут создать исключение, в блоке try, а в блок catch поместите код, обрабатывающий исключения. Блок catch — это серия операторов, начинающихся с ключевого слова catch, следом за которым указан тип исключения и выполняемые действия.

ПримечаниеПримечание

Практически любая строка кода может вызвать исключение, особенно исключения, которые создаются самой средой CLR, такие как OutOfMemoryException и StackOverflowException.Большинство приложений не имеют дела с такими исключениями, но следует иметь в виду возможность их возникновения при написании библиотек, которые будут использоваться сторонними пользователями.Предложения по поводу размещения кода в блоке try см. в разделе Рекомендации по обработке исключений.

В следующем примере кода блок try/catch используется для перехвата возможного исключения. Метод Main содержит блок try с оператором StreamReader, открывающий файл данных data.txt и записывающий строку из этого файла. Вслед за блоком try размещается блок catch, перехватывающий любые исключения, возникающие в блоке try.

Пример

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

В этом примере показан базовый оператор catch, который будет перехватывать любое исключение. В общем случае рекомендуется выполнять перехват определенного типа исключения, а не использовать базовый оператор catch. Дополнительные сведения о перехвате определенных исключений содержатся в разделе Использование определенных исключений в блоке Catch.

См. также

Задачи

Практическое руководство. Использование определенных исключений в блоке Catch

Практическое руководство. Явное создание исключения

Практическое руководство. Создание пользовательских исключений

Практическое руководство. Использование блоков Finally

Другие ресурсы

Основы обработки исключений