Глава 22. Обработка исключительных ситуаций 633
Рис. 22.2. Иерархия классов исключительных ситуаций в программе ExpSum2
Вторая стратегия, используемая классами этой иерархии, состоит в предоставлении дополнительной информации. Вспомните предыдущий пример о том, как сложно вернуть идентификатор служащего по цепочке вызовов. С механизмом обработки исключительных ситуаций такая модернизация становится почти тривиальной, и в ExpSum2 она сделана. Способность генерировать идентификатор служащего введена в класс EmpioyeeException, a классы NoExpenseItems И TooManyExpenseItems наследуют И используют эту способность.
Функция mainO. Вместо того чтобы представить программу ExpSum2 полностью, мы рассмотрим ее по частям и обсудим каждую часть с точки зрения ее интеграции в общую систему обработки исключительных ситуаций. Листинг 22.32 показывает разницу в функции main () программ ExpSumI и ExpSum2.
// Необходимые заголовки ftinclude <fstream.h>
#include <iomanip.h> ttinclude <employee.h>
#include <expense.h>
#include <expex.h>