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


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

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

Необходимо предоставить пользователю возможность на программном уровне различать условия возникновения ряда ошибок, можно создать свои пользовательские исключения. Платформа .NET Framework предоставляет иерархию классов исключений, производных от базового класса Exception. Каждый из этих классов самостоятельно определяет конкретное исключение, так что во многих случаях требуется только выполнить перехват этого исключения. Также можно создавать собственные классы исключений, производные от класса Exception.

При создании собственных исключений рекомендуется завершать имя класса пользовательского исключения словом "Exception". Также рекомендуется реализовать три общих конструктора, как показано в следующем примере.

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

В ситуациях, когда используется удаленное взаимодействие, необходимо гарантировать серверу (вызываемый объект) и клиенту (прокси-объект или вызывающий объект) доступность метаданных для любого пользовательского исключения. Например, код, вызывающий метод в отдельном домене приложения, должен иметь возможность найти сборку, содержащую исключение, созданное удаленным вызывающим объектом. Дополнительные сведения см. в разделе Наилучшие способы обработки исключений.

В следующем примере новый класс исключений EmployeeListNotFoundException является производным от Exception. В этом классе определены три конструктора, принимающие различные параметры.

Пример

Imports System
Public Class EmployeeListNotFoundException
   Inherits Exception
   
   Public Sub New()
   End Sub 'New
   
   Public Sub New(message As String)
      MyBase.New(message)
   End Sub 'New
   
   Public Sub New(message As String, inner As Exception)
      MyBase.New(message, inner)
   End Sub 'New
End Class 'EmployeeListNotFoundException
using System;
public class EmployeeListNotFoundException: Exception
{
   public EmployeeListNotFoundException()
      {
      }
   public EmployeeListNotFoundException(string message)
      : base(message)
      {
      }
   public EmployeeListNotFoundException(string message, Exception inner)
      : base(message, inner)
      {
      }
}

См. также

Задачи

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

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

Основные понятия

Лучшие методики обработки исключений

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

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