Язык программирования C++ от Страуструпа


         

Производные особые ситуации - часть 3


try {

  // ...

}

catch (ibuf) {

  // обработка переполнения буфера ввода

}

catch (io) {

  // обработка любой ошибки ввода-вывода

}

catch (stdlib) {

  // обработка любой особой ситуации в библиотеке

}

catch (...) {

  // обработка всех остальных особых ситуаций

}

Тип особой ситуации в обработчике соответствует типу запущенной особой ситуации в следующих случаях: если эти типы совпадают, или второй тип является типом доступного базового класса запущенной ситуации, или он является указателем на такой класс, а тип ожидаемой ситуации тоже указатель ($$R.4.6).

Поскольку транслятору известна иерархия классов, он способен обнаружить такие нелепые ошибки, когда обработчик  catch (...) указан не последним, или когда обработчик ситуации базового класса предшествует обработчику производной от этого класса ситуации ($$R15.4). В обоих случая, последующий обработчик (или обработчики) не могут быть запущены, поскольку они "маскируются" первым обработчиком.




Содержание  Назад  Вперед