Сегодня я обнаружил ошибку в блоке catch:
catch (const exception& e){
// do something
// throw e; <-- bug!
throw; // <-- right thing to do
}
В принципе, если я явно выражу исключение e, я получаю новый std::exception реконструированный, на самом деле сообщение из метода what() было по умолчанию std::string вместо моего настраиваемого сообщения.
Какое объяснение? Я думал, что throw; является только сокращением throw ExceptionJustCaught;.