Глава 22. Обработка исключительных ситуаций_______________________593
// Неправильно: обработчик следует не сразу за блоком 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