R.15.4 Обработка особой ситуации
R.15.4 Обработка особой ситуации
Обработчик типа T, const T, T& или const& сопоставим с выражением-запуска, имеющим операнд типа E, если:
[1] T и E являются одним типом;
[2] T является доступным (§R.4.6) базовым классом E в точке запуска;
[3] T является типом указателя, а E является таким типом указателя, который можно в точке запуска преобразовать в T с помощью стандартных преобразований указателя (§R.4.6).
Рассмотрим пример:
class Matherr {/*… */ virtual vf(); };
class Overflow: public Matherr {/*… */};
class Underflow: public Matherr {/*… */};
class Zerodivide: public Matherr {/*… */};
void f()
{
try {
g();
}
catch (Overflow oo) {
//…
}
catch (Matherr mm) {
//…
}
}
Здесь обработчик Overflow будет перехватывать ситуации типа Overflow, а обработчик Matherr будет перехватывать ситуации типа Matherr и всех типов, являющихся общими производными от Matherr, включая Underflow и Zerodivide.
Обработчики в проверяемом-блоке подбираются для данной особой ситуации в порядке их описания. Считается ошибкой, если обработчик для базового класса помещен перед обработчиком для производного класса, поскольку при таком расположении управление никогда не попадет к обработчику для производного класса.
Эллипсис … в описании-особой-ситуации действует так же как, и в описании параметров функции, он сопоставим с любой особой ситуацией. Если задан эллипсис, то использующий его обработчик должен идти последним в проверяемом-блоке.
Если в проверяемом-блоке не произошло сопоставления ни с одним из обработчиков, поиск соответствующего обработчика продолжается в динамически объемлющем проверяемом-блоке. Если во всей программе не произошло сопоставления ни с одним обработчиком, вызывается функция terminate() (§R.15.7).
Особая ситуация считается обработанной после входа в тело обработчика. В этот момент завершится "раскручивание стека".
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Как вести себя в тяжелой ситуации
Как вести себя в тяжелой ситуации Предотвращение и устранение кризисов – дело, конечно, хорошее, но иногда вы оказываетесь под давлением независимо от своего желания. Иногда проект просто занимает больше времени, чем планировалось изначально. Иногда исходная
1.5.1 Прерывания и особые ситуации
1.5.1 Прерывания и особые ситуации Система UNIX позволяет таким устройства, как внешние устройства ввода-вывода и системные часы, асинхронно прерывать работу центрального процессора. По получении сигнала прерывания ядро операционной системы сохраняет свой текущий
6.4.1 Прерывания и особые ситуации
6.4.1 Прерывания и особые ситуации Система отвечает за обработку всех прерываний, поступили ли они от аппаратуры (например, от таймера или от периферийных устройств), от программ (в связи с выполнением инструкций, вызывающих возникновение «программных прерываний») или
R.15.2 Запуск особой ситуации
0
R.15.7 Особые ситуации и правила доступа
R.15.7 Особые ситуации и правила доступа Для формального параметра операции catch действуют такие же правила доступа, как и для формального параметра функции, в которой задана операция catch.При запуске особой ситуации можно указывать такой объект, который можно копировать и
Бизнес-ситуации
Бизнес-ситуации Многие книги, посвященные компьютерному обеспечению, состоят из длинных списков программных средств с кратким описанием особенностей их работы. Если вам повезет, вы найдете описание того, как данный продукт связан с реальным миром.Цель настоящей книги –
20.3.6. В Unix API не используются исключительные ситуации
20.3.6. В Unix API не используются исключительные ситуации Язык С испытывает недостаток средств восстановления для обработки именованных исключительных ситуаций со связанными данными119. Таким образом, С-функции в Unix API сообщают об ошибках путем возвращения известного
20.3.6. В Unix API не используются исключительные ситуации
20.3.6. В Unix API не используются исключительные ситуации Язык С испытывает недостаток средств восстановления для обработки именованных исключительных ситуаций со связанными данными[154]. Таким образом, C-функции в Unix API сообщают об ошибках путем возвращения известного
Глава 6 Тонкости и нештатные ситуации
Глава 6 Тонкости и нештатные ситуации В процессе работы с системным реестром Windows нередко возникают различные нестандартные ситуации. В данной главе я постараюсь в режиме «вопрос – ответ» подсказать читателю, как наиболее оптимальным образом и с минимальными потерями
46 Полезные ситуации
46 Полезные ситуации Сегодня чуть ли не каждый системный аналитик или разработчик программного обеспечения превращается в сценариста, словно в каждом из них спрятан талант голливудского кинодраматурга. Как только скучающие теоретики придумывают очередную статью, а
Фиаско поставок ПК в Западной Европе: анализ ситуации Сергей Голубицкий
Фиаско поставок ПК в Западной Европе: анализ ситуации Сергей Голубицкий Опубликовано 16 мая 2013 Авторитетный Gartner опубликовал статистику по поставкам персональных компьютеров в страны Западной Европы в первом квартале 2013 года. Сказать, что
Ситуации отказа
Ситуации отказа Рассматривая список возможных исключений, полезно определить, когда может встретиться отказ (причина исключения у вызывающей программы):Определение: случаи отказаВызов программы приводит к отказу, если и только если встретилось исключение в процессе
Особо критические ситуации
Особо критические ситуации Один короткий сигнал при запуске компьютера свидетельствует о том, что каких-либо критических неисправностей не обнаружено. Но если сигналов несколько – значит, программа самодиагностики компьютера обнаружила критическую ошибку, не
Тагир Яппаров (АйТи): О «политической воле» и ситуации с госпроектами на рынке ИТ Тагир Яппаров (АйТи)
Тагир Яппаров (АйТи): О «политической воле» и ситуации с госпроектами на рынке ИТ Тагир Яппаров (АйТи) Опубликовано 06 февраля 2013Совокупный спрос, генерируемый государством, во многом определяет ситуацию на российском рынке информационных технологий. До некоторых пор