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


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

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

Object
  Exception
    SystemException
      InvalidCastException

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

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

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

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

См. также