当在C ++中遇到异常时,程序会在捕获它时自动终止。有没有办法,如果在循环中捕获异常,我可以跳过循环的其余部分并直接进入下一次迭代?
答案 0 :(得分:1)
有许多不同的方法可以解决这个问题。
创建一个成员函数,在成功之前检查移动是否有效。调用代码需要在调用advance
之前调用此函数,并且只有在移动有效时才调用advance
。
使advance
成员函数返回一个值,指示玩家的位置是否已提前。调用代码将需要测试返回值以决定是否打印电路板或打印"再次尝试"消息类型。
如果移动无效,则使advance
成员函数抛出异常。调用代码需要捕获异常。
还有很多其他方法可以解决这个问题。
答案 1 :(得分:0)
首先,如果剪切代码完全是您复制粘贴它的方式,它会有一些语法错误。这是应该写的:
int main() {
...
Person *p = new Person("Neo");
...
string in;
while(cin >> in) {
if (in == "q") {
break;
}
else if (in == /*One of the eight directions North ... Northwest*/) {
p->advance(in);
} //this bracket here ends the if. after the parentheses, nothing else will execute
else {
cerr << "Input one of the eight directions" < endl;
}
}
}
所以,是的,如果我理解你的问题,那么加上那个结束括号应该解决它。我希望这是你需要的,而且它很有帮助