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

C++ - Continuing a while loop upon exception

本文关键字:继续 while 循环 异常 C++-      更新时间:2023-10-16

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

有很多不同的方法可以解决这个问题。

  • 创建一个成员函数,在进行移动之前检查移动是否有效。调用代码需要在调用advance之前调用此函数,并且只有在移动有效的情况下才调用advance

  • 使advance成员函数返回一个值,该值指示玩家的位置是否提前。调用代码需要测试返回值,以决定是打印电路板还是打印"重试"类型的消息。

  • 如果移动无效,则使advance成员函数引发异常。调用代码将需要捕获异常。

有很多其他方法可以解决这个问题。

首先,如果剪切的代码完全是复制粘贴的,那么它会有一些语法错误。应该这样写:

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

所以,是的,如果我正确理解你的问题,在那里添加右括号应该可以解决它。我希望这是你所需要的,它对

有帮助