【问题标题】:Call "continue" within function在函数内调用“继续”
【发布时间】:2015-10-06 04:29:06
【问题描述】:

我的 C++ 程序中有一个主循环。我也有异常处理的功能。

它的语法是这样的:

void handleEx(int errorCode)

调用此函数后,我总是使用continue; 重新启动我的循环,所以它看起来像这样:

if(/*exception occured*/)
{
    handleEx(5);
    continue;
}

是否可以将continue; 放在函数中,这样我就不必重写该命令和{}?

【问题讨论】:

  • 简短回答:不。无论如何,不​​完全像你问的那样。
  • 这个无法回答(提供更好的例子)
  • 您不希望在函数调用中继续。以这种方式表示,任何人都可以阅读异常发生时发生的情况。如果您将 continue 放在函数内部,而有人没有查看该函数,他们将不会理解您在引发异常时跳过了循环的其余部分。始终保持简单。
  • 另外,一般来说,不必担心有多余的括号或使用多少空间。新程序员最常犯的错误是试图让一切变得小而整洁。尽可能使所有内容可读并使用标准约定,从长远来看,您的生活会更轻松。
  • 感谢您的帮助!不过,现在呢?我不能接受任何答案,因为 cmets 回答了我的问题

标签: c++ loops while-loop continue


【解决方案1】:

你应该让函数返回一个bool,这样你的函数头就会看起来像bool handleEx(int errorCode);,然后在while循环中你可以这样做:

while(something) {
    //...
    if(handleEx(myError)) continue;
    //...
}

【讨论】:

  • 在这个函数调用之后我总是想continue;,所以如果在那里我会有一秒钟的时间,这总是正确的。
  • @kim366 你什么意思?如果if 总是正确的,那又有什么好处呢?
  • @scohe001 这就是重点。你说handleEx 应该返回 true 如果应该跳过其余的迭代。但是 OP 说在调用 handleEx 时应该总是跳过它。所以它总是返回 true 并且 if 总是进入 then 分支。这是没有意义的。所以函数返回布尔值是没有意义的。
猜你喜欢
  • 2021-02-16
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多