Практическое руководство. Использование пробного блока и блока перехвата для перехвата исключений
Обновлен: Ноябрь 2007
Разместите части кода, которые могут создать исключение, в блоке try, а в блок catch поместите код, обрабатывающий исключения. Блок catch — это серия операторов, начинающихся с ключевого слова catch, следом за которым указан тип исключения и выполняемые действия.
![]() |
---|
Практически любая строка кода может вызвать исключение, особенно исключения, которые создаются самой средой CLR, такие как OutOfMemoryException и StackOverflowException. Большинство приложений не имеют дела с такими исключениями, но следует иметь в виду возможность их возникновения при написании библиотек, которые будут использоваться сторонними пользователями. Предложения по поводу размещения кода в блоке try см. в разделе Рекомендации по обработке исключений. |
В следующем примере кода блок try/catch используется для перехвата возможного исключения. Метод Main содержит блок try с оператором StreamReader, открывающий файл данных data.txt и записывающий строку из этого файла. Вслед за блоком try размещается блок catch, перехватывающий любые исключения, возникающие в блоке try.
Пример
Option Explicit
Option Strict
Imports System
Imports System.IO
Imports System.Security.Permissions
<assembly: FileIOPermissionAttribute(SecurityAction.RequestMinimum, All := "c:\data.txt")>
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())
Catch e As Exception
Console.WriteLine("An error occurred: '{0}'", e)
End Try
End Sub
End Class
using System;
using System.IO;
using System.Security.Permissions;
// Security permission request.
[assembly:FileIOPermissionAttribute(SecurityAction.RequestMinimum, All = @"c:\data.txt")]
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());
}
catch(Exception e) {
Console.WriteLine("An error occurred: '{0}'", e);
}
}
}
В этом примере показан базовый оператор catch, который будет перехватывать любое исключение. В общем случае рекомендуется выполнять перехват определенного типа исключения, а не использовать базовый оператор catch. Дополнительные сведения о перехвате определенных исключений содержатся в разделе Использование определенных исключений в блоке Catch.
См. также
Задачи
Практическое руководство. Использование определенных исключений в блоке Catch
Практическое руководство. Явное создание исключения
Практическое руководство. Создание пользовательских исключений
Практическое руководство. Использование блоков Finally