Класс и свойства исключений

Exception — это базовый класс, от которого наследуются исключения. Например, иерархия класса InvalidCastException имеет следующий вид:

Object
  Exception
    SystemException
      InvalidCastException

Класс Exception имеет следующие свойства, которые облегчают анализ исключения.

Имя свойства Description
Data Свойство IDictionary, которое содержит произвольные данные в парах "ключ–значение".
HelpLink Может содержать URL-адрес (или URN) файла справки, который предоставляет подробные сведения о причине возникновения исключения.
InnerException Это свойство может использоваться для создания и сохранения последовательностей исключений во время обработки исключений. Его можно использовать для создания нового исключения, содержащего ранее перехваченные исключения. Исходное исключение может быть перехвачено вторым исключением в свойстве InnerException, что позволяет коду, обрабатывающему второе исключение, проверить дополнительные данные. Например, предположим, что у вас есть метод, который принимает аргумент в неправильном формате. Код пытается считать аргумент, но создается исключение. Метод перехватывает исключение и выдает FormatException. Чтобы расширить возможности вызывающего объекта для определения причины исключения, иногда желательно, чтобы метод перехватывал исключение, выданное вспомогательной процедурой, а затем выдавал исключение, содержащее больше сведений о возникшей ошибке. Можно создать новое и более информативное исключение, где ссылка на внутреннее исключение может указывать на исходное исключение. Затем это более информативное исключение может выдаваться вызывающему объекту. Обратите внимание, что с помощью данной функции можно создать последовательность связанных исключений, которая завершается первым выданным исключением.
Message Предоставляет сведения о причине возникновения исключения.
Source Возвращает или задает имя приложения или объекта, вызывавшего ошибку.
StackTrace Содержит трассировку стека, которую можно использовать для определения места возникновения ошибки. Эта трассировка стека содержит имя исходного файла и, при наличии отладочной информации, номер программной строки.

Большинство классов, унаследованных от Exception, не реализуют дополнительные элементы и не предоставляют дополнительные функции. Они просто наследуются от Exception. Таким образом, наиболее важные сведения для исключения можно найти в иерархии классов исключений, имени исключения и информации, содержащейся в самом исключении.

Мы рекомендуем создавать и перехватывать только те объекты, которые являются производными от Exception, но в качестве исключения можно создать любой объект, производный от класса Object. Обратите внимание, что не все языки поддерживают создание и перехват объектов, не являющихся производными от Exception.

См. также