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

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

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

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

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

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

Пример

Imports System

Public Class EmployeeListNotFoundException
    Inherits Exception

    Public Sub New()
    End Sub

    Public Sub New(message As String)
        MyBase.New(message)
    End Sub

    Public Sub New(message As String, inner As Exception)
        MyBase.New(message, inner)
    End Sub
End Class
using System;

public class EmployeeListNotFoundException: Exception
{
    public EmployeeListNotFoundException()
    {
    }

    public EmployeeListNotFoundException(string message)
        : base(message)
    {
    }

    public EmployeeListNotFoundException(string message, Exception inner)
        : base(message, inner)
    {
    }
}
using namespace System;

public ref class EmployeeListNotFoundException : Exception
{
public:
    EmployeeListNotFoundException()
    {
    }

    EmployeeListNotFoundException(String^ message)
        : Exception(message)
    {
    }

    EmployeeListNotFoundException(String^ message, Exception^ inner)
        : Exception(message, inner)
    {
    }
};

См. также

Задачи

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

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

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

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

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

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