Это не мешает вам генерировать исключения из вашего деструктора. Компилятор все равно позволит вам это сделать. Разница в том, что , если вы разрешите исключение из этого деструктора, ваша программа немедленно вызовет unexpected
. Эта функция вызывает все, на что указывает unexpected_handler
, что по умолчанию равно terminate
. Поэтому, если вы не сделаете что-то для обработки неожиданного исключения, ваша программа завершит работу, что не является плохой идеей. В конце концов, если исключение действительно является неожиданным, то в действительности ваша программа ничего не сможет сделать для его обработки.
Это не что-то особенное в деструкторах; одни и те же правила применяются к спецификациям исключений для всех методов.