就像標題所說,我無法捕獲函數拋出的異常。它只是說無法從C++中的某個函數中捕獲異常
try{
cmd_parameters = parse_cmd(argc, argv);
}
catch (InvalidParametersError e){
// blablabla
}
拋出異常的函數「肆意tocccli的實例:: InvalidParametersError *終止後,被稱爲」
std::vector<CmdParam> parse_cmd(int argc, char* argv[]){
for (int i = 1; i < argc; ++i)
{
if (argv[i][0] == '-')
{
//blablala
}
else
{
if (result.empty())
{
throw new InvalidParametersError(
"First parameter have to be an option (e.g. starts with a dash)");
}
result.back().arguments.push_back(argv[i]);
}
}
return result;
}
的功能是一個叫做tocccli 我缺少的東西命名空間裏?
它的工作!但爲什麼?新的X()和X()之間有什麼區別? – makanbeling
想想一個名爲catch的函數(它不是,但只是忍受着我)。當用X()創建X時,它可以傳遞給catch(X),catch(X&)或catch(const X&)。當使用新的X()創建X時,需要catch來處理指向X的指針,如catch(X *)或catch(const X *)。 當然,用new動態創建一個異常也會引入如何釋放內存的問題。您必須在異常處理程序中刪除X *,這絕對是非規範的。通常情況下,異常會在堆棧中創建並通過引用來捕獲。 – pzed