Глава 22. Обработка исключительных ситуаций 607

одном блоке try, произвести некоторую обработку, а затем передать ее другому блоку try для дополнительной обработки. Чтобы сделать это, используйте ключевое слово throw без аргументов. Это приведет к тому, что текущая исключительная ситуация перенаправляется к следующему подходящему обработчику. Листинг 22.19 показывает пример того, как организовать такую эстафету.

h06071.jpg

// Необходимые заголовки #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 (с помощью