[英]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.