C ++尝试内环路捕捉(C++ Try Catch inside loop)

2019-09-22 00:53发布

我有这样的C ++具有以下通式结构的程序

1st while (condition A == true)
  //some code for 1st loop

  2nd while (condition B == true)
    //some code for 2nd loop
    try
      //some code for try
    catch
      //condition B == false (supposed to leave 2nd loop and go back to first loop)

我希望它摆脱第二循环时,有一个例外,并返回到第一环,直到条件B是星期二一次。 如上所述,我希望这是行不通的。 什么似乎是发生的是,代码卡在catch和永远不会离开它。

我如何安排它做它的工作,因为我需要什么?

注:条件A决不会为假。

Answer 1:

休息关键字添加到抓

还要注意的具有B- ==虚假; 即检查b等于假的,不设置b =假。



Answer 2:

bool flag1 = true, flag2 = true;
while (flag1)
{
  // some work so that flag2 == true
  while (flag2)
  {
    try
    {

    }
    catch (...) // any exception happens
    {
        break;
    }
  }
}


Answer 3:

1st while (condition A == true) 
  //some code for 1st loop 

  2nd while (condition B == true) 
    //some code for 2nd loop 
    try 
      //some code for try 
    catch 
    {
      //condition B == false (supposed to leave 2nd loop and go back to first loop) 
      break ;
    }

注意:请不要使用,即使在例子,像condition A == true 。 这是更好地使用while (condition A)



Answer 4:

您可以在catch块内调用突破逃脱第二循环:

void foo(void) {
    bool A(true);
    while (A) {
        bool B(doSomething());
        while (B) {
            try {
                B = doSomethingElseThatMayThrow();
            } catch (...) {
                break;
            }
        }
     }
}

或者,你可以放置在try块内的第二个循环:

void foo(void) {
    bool A(true);
    while (A) {
        bool B(doSomething());
        try { 
            while (B) {
                B = doSomethingElseThatMayThrow();
            }
        } catch (...) {}
    }
}


文章来源: C++ Try Catch inside loop