Поделиться через


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

Обновлен: Ноябрь 2007

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

xtd0s8kd.alert_note(ru-ru,VS.90).gifПримечание.

Практически любая строка кода может вызвать исключение, особенно исключения, которые создаются самой средой 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

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

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