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

h05931.jpg

// Неправильно: обработчик следует не сразу за блоком try try (

ProcessEJ.ements () ;

)

ProcessMoreElements() ;

catch (int ErrorCode) {

ProcessException (ErrorCode);

// Правильно try {

ProcessElements();

} : ' •. catch (int ErrorCode) )

ProcessException(ErrorCode);

}

I / Правильно try {

ProcessElements();

} catch (int ErrorCode) {

ProcessException(ErrorCode) ;

} catch (char *ErrorS.tring) (

cout « "Исключительная ситуация {" « ErrorString « ")\n"

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

Блоки try можно вкладывать друг в друга. Пример вложения одного блока try внутрь другого приведен в листинге 22.11.

// Необходимые заголовки ffinclude <stdiib.h> #inciude <iostream.h>

// Константы const int MIN_FLAG_VALUE -- 0;

cons', int MM_FLAG_VALUE = 10;

const int FLAG_OUT_OF_BOUNDS = OxFF;

// Обработка void DoSomethingElseO