gpt4 book ai didi

c++ - 无法从 C++ 中的函数捕获异常

转载 作者:太空狗 更新时间:2023-10-29 20:40:13 25 4
gpt4 key购买 nike

如标题所说,我无法捕获函数抛出的异常。它只是说“在抛出一个 tocccli::InvalidParametersError* 实例后调用终止”

try{
cmd_parameters = parse_cmd(argc, argv);
}
catch (InvalidParametersError e){
// blablabla
}

抛出异常的函数

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 的命名空间内我错过了什么吗?

最佳答案

不要在 parse_cmd() 中使用 new 关键字抛出:

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 InvalidParametersError( // <-- No new keyword here
"First parameter have to be an option (e.g. starts with a dash)");
}

result.back().arguments.push_back(argv[i]);
}
}

return result;
}

通过 const 引用捕获:

try{
cmd_parameters = parse_cmd(argc, argv);
}
catch (const InvalidParametersError& e){
// blablabla
}

关于c++ - 无法从 C++ 中的函数捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24888578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com