Глава 22. Обработка исключительных ситуаций 607
одном блоке try, произвести некоторую обработку, а затем передать ее другому блоку try для дополнительной обработки. Чтобы сделать это, используйте ключевое слово throw без аргументов. Это приведет к тому, что текущая исключительная ситуация перенаправляется к следующему подходящему обработчику. Листинг 22.19 показывает пример того, как организовать такую эстафету.
// Необходимые заголовки #include <iostream.h>
void Fund () {
try {
throw "Дело плохо!" ;
} catch (char *) (
cout « "Для начала предварительная обработка...\n" throw;
) i
void main() {
try {
Fund () ;
} catch (char*) {
cout « "А теперь окончательная обработка.\п";
t )
При выполнении эта программа выведет на экран следующее:
Для начала предварительная обработка... А теперь окончательная обработка.
Профамма не ищет подходящий обработчик ниже в текущем списке, а перенаправляет исключительную ситуацию к блоку try более высокого уровня.
! Предупреждение
Перенаправляя исключительную ситуацию с помощью ключевого слова throw;, убедитесь, что вы делаете это внутри блока catch. Если вы просто вызываете throw;, но при этом не происходит никакой текущей обработки исключительных ситуаций, то автоматически будет вызван обработчик terminate. Если вы не задали собственную функцию terminate (с помощью