Класс 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. Таким образом, наиболее важные сведения об исключении можно найти в иерархии исключений, в имени исключения и в информации, содержащейся в этом исключении.
См. также
Основные понятия
Лучшие методики обработки исключений
Обработка и создание исключений