LHS состояние после исключения выбрасывается - PullRequest
3 голосов
/ 18 апреля 2010

Я изучаю исключения C ++, и мне хотелось бы уточнить сценарий:

T function() throw(std::exception);
...
T t = value;
try { t = function(); }
catch (...) {}

если выдается исключение, каково состояние переменной t? без изменений или без определения?

Ответы [ 3 ]

6 голосов
/ 18 апреля 2010

Это не так просто. Ваше предложение catch также будет перехватывать исключения, сгенерированные оператором присваивания для класса объектов t. Объект t может быть частично назначен. Никогда не поймайте все исключения и не предполагайте, что наиболее вероятная вещь произошла.

3 голосов
/ 18 апреля 2010

Без изменений. t нельзя присвоить, пока function() не вернет значение, а function() никогда не вернется нормально

3 голосов
/ 18 апреля 2010

t не установлено, поскольку исключение выдается перед назначением. Функция должна будет вернуть значение для t, которое должно быть установлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...