Класс Exception и его свойства

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

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

  • Свойство StackTrace.

    Это свойство содержит трассировку стека, которую можно использовать для определения места возникновения ошибки. Трассировка стека включает имя файла источника и, при наличии отладочной информации, номер программной строки.

  • Свойство InnerException.

    Это свойство может использоваться для создания и сохранения серии исключений во время обработки исключений. Это свойство можно использовать для создания нового исключения, содержащего ранее перехваченные исключения. Исходное исключение может быть захвачено вторым исключением в свойстве InnerException, что позволяет коду, обрабатывающему второе исключение, проверять дополнительные данные.

    Например, предположим, что существует метод, выполняющий чтение файла и форматирование данных. Этот код пытается выполнить чтение из файла, но создается исключение FileException. Данный метод перехватывает FileException и создает исключение BadFormatException. В этом случае исключение FileException может быть сохранено в свойстве InnerException исключения BadFormatException.

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

  • Свойство Message.

    Это свойство предоставляет подробные сведения о причине возникновения исключения. Свойство Message выводится на том языке, который указан в свойстве Thread.CurrentUICulture для потока, который создает исключение.

  • Свойство HelpLink.

    Это свойство может содержать URL (или URN) к файлу справки, предоставляющему подробные сведения о причине возникновения исключения.

  • Свойство Data.

    Это свойство имеет тип IDictionary и может содержать произвольные данные в парах "ключ-значение".

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

См. также

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

Иерархия исключений

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

Обработка и создание исключений

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

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