請執行以下代碼;拋出異常爲const&
void DoThrow(const std::exception& e)
{
throw e;
}
int main(int nArgs, char* args[])
{
std::exception e;
try
{
DoThrow(e);
}
catch(std::exception& e)
{
// const exception ref is caught
}
return 0;
}
我想改進常量在我的項目中的正確性和無意中創建了上述情況。就目前而言,在Dev Studio中,catch塊會捕獲異常,儘管它被拋出爲const &,但被捕獲爲非const &。
問題 - 應該嗎? :-)
簡而言之,您不會收到與'DoThrow(e)'相同的對象'e'。 – spraff
這是一個 - 乾杯! (這也意味着你應該注意用'throw'重新拋出,而不是'扔掉';) –