我有以下的try/catch:C++的try/catch不能捕获的异常
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语句中。
您正在捕获一个'int'。你知道这个对吗? – Rapptz
要捕捉所有内容,请使用'catch(...)',但不要这样做。 – doug65536
你需要赶上std :: out_of_range而不是int – Pedrom