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