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