16.7. Пользовательские классы исключений
В
предыдущих программах при генерации
исключений был использован системный
тип Exception.
Кроме него в среде .NET
имеется большое количество
специализированных классов исключений.
Часто этих системных исключений
вполне достаточно для реакции на те
события, которые могут произойти
в вашей программе. Однако
программист-пользователь может определять
собственные классы исключений. Их можно
создавать либо на базе
класса Exception,
либо используя в качестве базовых более
специализированные
системные классы исключений.
В
стандартной библиотеке определены два
класса исключений, каждый из которых
является прямым наследником класса
System.Exception.
Класс System.SystemException
соответствует исключениям, порождаемым
средой, в которой
выполняется
прикладная
программа.
Класс
System.ApplicationException
предназначен для создания объектов-исключений,
относящихся
к выполнению прикладных программ.
Создавая собственные классы
исключений, стандарт языка С# рекомендует
делать их наследниками класса
System.ApplicationException,
а не класса System.Exception.
Определяя
собственный класс исключений, рекомендуется
объявить в этом
классе три конструктора: конструктор
умолчания, конструктор с параметрами
типа string
и
конструктор с параметрами string
и
Exception.
В каждом
из этих конструкторов нужно вызвать
конструкторы базового класса. В
конструкторе умолчания в обращении к
базовому конструктору ему передаётся
текст сообщения, уникального для
собственного класса исключений.
В конструкторе с параметром типа string
базовому
конструктору передаётся
сообщение об ошибке. В третьем конструкторе
базовому конструктору
передаётся сообщение об ошибке и объект
внутреннего исключения.
13