C ++ - 在异常时继续while循环

时间:2016-03-29 21:18:16

标签: c++ loops exception return

当在C ++中遇到异常时,程序会在捕获它时自动终止。有没有办法,如果在循环中捕获异常,我可以跳过循环的其余部分并直接进入下一次迭代?

2 个答案:

答案 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;
      }
     }
    }

所以,是的,如果我理解你的问题,那么加上那个结束括号应该解决它。我希望这是你需要的,而且它很有帮助