заметки на полях Есть много разных причин, в силу которых использование exceptions в С++ затруднено по сравнению с иными языками, наример по сравнению с java.
Одна из них - в том, что оператор 'return' в С++ может кинуть исключение, поскольку он может вызывать конструктор копирования. Если функция, из которой брошено это исключение, меняет состояние каких-то данных, и нам необходимо обеспечить транзакционную семантику, т.е. полностью восстановить состояние этих данных, написание корректного кода в подобном случае превращается в непростую, а порой и невозможную для решения задачу и в любом случае не сопровождается кодом, лёгким для написания и понимания.
Появление в новом С++ move-конструктора не сильно улучшает положение
( Read more... )