Парапура, может быть полезно иметь в виду, что стандарт C ++ - это определение языка, которое накладывает ограничения на то, как компилятор преобразует исходный код в объектный код.
Стандарт не накладывает ограничений на операционную систему, оборудование или что-либо еще.
Если пользователь выключает свою машину, является ли это нарушением стандарта C ++? Конечно, нет. Должен ли стандарт сказать «если пользователь не выключит устройство» как «исключение» из каждого правила? Это было бы глупо.
Точно так же, если операционная система убивает процесс или принудительно освобождает некоторые системные ресурсы, или даже позволяет сторонней программе засорять ваши структуры данных - это не является нарушением стандарта C ++. Это может быть ошибка в ОС, но определение языка C ++ остается без изменений.
Стандарт обязателен только для компиляторов и заставляет полученный исполняемый код иметь определенные свойства. Тем не менее, он не связывает поведение во время выполнения, поэтому мы тратим так много времени на обработку исключений.