Определяемые программистом

Выше обсуждались исключительные ситуации и то, каким образом можно использовать блоки try . . .catch.. .finally для их обработки. Вы также познакомились с несколькими стандартными для .NET Framework исключительными ситуациями, в том числе и с System.Exception — базовым классом для исключительных ситуаций.

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

После того как класс исключительных ситуаций определен, появляется возможность внести его в список исключительных ситуаций, распознаваемых VS с помощью пункта меню Debug | Exceptions.... Представленное на рисунке слева диалоговое окно позволяет управлять реакцией VS на возникновение необрабатываемой исключительной ситуации данного типа. Здесь можно настроить VS либо на прекращение выполнения программы и запуск отладчика, либо на продолжение выполнения программы: во-первых, когда возникает исключительная ситуация такого рода и, во-вторых, если эта ситуация не обрабатывается.