Страницы

Поиск по вопросам

суббота, 21 декабря 2019 г.

Два исключения - это много?

#cpp #исключения #деструктор


Вычитал у Майерса, то что два исключения в деструкторе - это слишком много.
Что он этим хотел сказать? Одно исключение - это не много, а вот два - это уже много?
Мне кажется, что уже одно исключение не даст приложению нормально работать?
    


Ответы

Ответ 1



Вы его неверно прочли :) В деструкторе вообще не должно быть исключений. Потому что представьте себе - где-то в коде сгенерировано исключение, пошла свертка стека, удаление объектов - т.е. вызовы деструкторов. И если при этом какой-то деструктор сгенерирует исключение - что будет? Будет два исключения, причем второе сгенерировано во время обработки первого. Вот что имеется в виду, когда говорится о двух исключениях. На у а дальше... что же делать дальше? Какое из исключений обрабатывать? Продолжать обработку первого, игнорируя второе? Игнорировать первое и обрабатывать второе? В результате в этой ситуации программа просто аварийно завершается...

Комментариев нет:

Отправить комментарий