Практическое руководство. Использование пробного блока и блока перехвата для перехвата исключений
Разместите части кода, которые могут создать исключение, в блоке 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