Отладка исключений
В отладчике из Microsoft Visual Studio есть специальная поддержка исключений:
выберите команду
Exceptions
в меню
Debug
— появится диалоговое окно, показан-
ное на рис. 20.4.
538
Глава.20 .Исключения.и.управление.состоянием
рис. 20.4.
.Диалоговое.окно.Exceptions.с.различными.исключениями
Здесь показаны типы исключений, поддерживаемые Visual Studio. Раскрыв
ветвь
Common
Language
Runtime
Exceptions
, как показано на рис. 20.5, вы увидите
пространства имен, поддерживаемые отладчиком из Visual Studio.
рис. 20.5.
.CLR-исключения,.упорядоченные.по.пространствам.имен,.
в.диалоговом.окне.Exceptions.в.Visual.Studio
Раскрыв пространство имен, как показано на рис. 20.6, вы увидите все опреде-
ленные в нем типы, производные от
System.Exception
.
Если для какого-либо исключения установлен флажок
Thrown
, при генерации
этого исключения отладчик остановится. В момент останова среда CLR еще не
приступила к поиску подходящего блока
catch
. Это может быть полезно для от-
ладки кода, ответственного за перехват и обработку соответствующего исключения.
Также это может пригодиться в ситуации, когда вы подозреваете, что компонент
или библиотека поглощает или повторно генерирует исключение, и не знаете, где
поставить точку останова, чтобы застать компонент «на месте преступления».
Если для исключения флажок
Thrown
не установлен, отладчик остановится,
только если после появления соответствующего исключения оно останется необ-
539
Отладка.исключений
работанным. Это наиболее популярный вариант, так как обработанное исключение
означает, что приложение предвидит возникновение подобных исключений и знает,
как с ними справляться.
рис. 20.6.
.Диалоговое.окно.Exceptions.в.Visual.Studio.с.CLR-исключениями,.
определенными.в.пространстве.имен.System
Вы можете определять собственные типы исключений и добавлять их в окно,
щелкнув на кнопке
Add
. При этом появляется диалоговое окно, показанное на
рис. 20.7.
рис. 20.7.
.Передача.Visual.Studio.сведений.о.собственном.типе.исключений
В этом окне сначала выбирают тип
Common
Language
Runtime
Exceptions
, а затем
вводят полное имя собственного типа исключений. Вводимый тип не обязательно
должен быть потомком
System.Exception
, так как типы, не совместимые с CLS,
поддерживаются в полном объеме. Если у вас два или больше типов с одинаковыми
именами, но в разных сборках, различить эти типы невозможно. К счастью, такое
случается редко.
Если в вашей сборке определены несколько типов исключений, следует добав-
лять их по очереди. Я бы хотел, чтобы в следующей версии это диалоговое окно
позволяло находить сборку и автоматически импортировать из нее в отладчик
Visual Studio все типы, производные от
Exception
. А возможность дополнительной
идентификации каждого типа по имени сборки решила бы проблему одноименных
типов из разных сборок.
Do'stlaringiz bilan baham: |