繁体   English   中英

C ++ try / catch没有捕获异常

[英]C++ try/catch not catching exception

我有以下尝试/捕获方法:

try
{
    Player newPlayer = Database::newPlayer(atoi(arguments.at(1).c_str()), arguments.at(2));
}
catch (int e)
{
    cout << "Wrong parameters used.\n";
}

我的目标是能够添加一个播放器,并且如果由于某种原因参数不匹配,例如将非整数作为arguments.at(1)或参数不足,但是如果我这样做,则在Visual Studio中然后程序崩溃,Visual Studio说“未处理的异常,内存位置处std :: out_of_range”。 我希望我的程序不会在发生这种情况时崩溃,而只需说出“当前使用的错误参数”即可,因为它当前在catch语句中。

您需要捕获std::out_of_range而不是int

您需要捕获std :: out_of_range而不是int

try
{
    Player newPlayer = Database::newPlayer(atoi(arguments.at(1).c_str()), arguments.at(2));
}
catch (std::out_of_range& e)
{
    cout << "Wrong parameters used.\n";
}

您将需要捕获std :: out_of_range异常,例如:

try
{
   //your throwing code
}
catch (std::out_of_range &e)
{
    cout << "Wrong parameters used.\n";
}

还要注意使用引用(&用法)捕获,而不是像使用int那样按值捕获,以避免对象切片和冗余副本出现任何问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM