Я изучаю исключения C ++, и мне хотелось бы уточнить сценарий:
T function() throw(std::exception); ... T t = value; try { t = function(); } catch (...) {}
если выдается исключение, каково состояние переменной t? без изменений или без определения?
Это не так просто. Ваше предложение catch также будет перехватывать исключения, сгенерированные оператором присваивания для класса объектов t. Объект t может быть частично назначен. Никогда не поймайте все исключения и не предполагайте, что наиболее вероятная вещь произошла.
Без изменений. t нельзя присвоить, пока function() не вернет значение, а function() никогда не вернется нормально
t
function()
t не установлено, поскольку исключение выдается перед назначением. Функция должна будет вернуть значение для t, которое должно быть установлено.