【问题标题】:Visual Basic's On Error Resume Next for c++?Visual Basic On Error Resume Next for c++?
【发布时间】:2013-12-18 00:52:54
【问题描述】:

对于 C++ 是否有与 Visual Basic 的 On Error Resume Next 等效的方法,如果发生错误,代码会在不提示用户的情况下继续执行?

理想情况下,希望捕获任何异常并将它们记录到 log.txt 文件并稍后检查,而不是让异常突然退出代码。

Visual Basic:

For i = 1 to 100
  On Error Resume Next
  ReturnedOpcVal[i] = OPC.ReadTag(“Server.Path.Tag” & "TagName_" & Cstr(i))
Next i

C++,我在想:

Try {
    // Try looping through code here
       For (i = 1;  i <= 100; i++)

           {
               // Read OPC tags code here
           }
    }

Catch(…)
   {
        // log error to file code
   }

【问题讨论】:

  • 简短的回答是肯定的,就是这样:exceptions.
  • @Adriano - 不,你错了,如果在 C++ 代码中产生错误,循环将不会继续运行,在 VB 代码中它会。
  • @MattWilko 我没有说他的代码是正确的或他必须如何更改它(这就是为什么它是评论而不是答案),只是他必须使用异常(带有指向教程的链接,让他看看它们是如何工作的以及如何使用它们)。

标签: c++ vba visual-c++ vb6


【解决方案1】:

没有这样的事。您必须编写代码来捕获并吞下异常。像这样的:

for(int i=1; i<=100; i++)
{
  try
  {
    // Read OPC tags code here
  }
  catch(...)
  {
    // Log something
  }
}

【讨论】:

  • 这与 OP 自己编写的示例有何不同(有什么好处)?
  • @Adriano - 在他发布的 VB6 代码中,即使发生错误,循环也会运行 100 次。在他发布的 C++ 代码中,当抛出异常时,循环将退出,因此不会运行 100 次。
【解决方案2】:

这相当于 VB 代码:

   for (i = 1;  i <= 100; i++)
       {
           try {               
               // Read OPC tags code here
           catch(…)
           {

           }
       }
   }

但您可能还想在整个批次周围再包裹一个 try catch 块。

【讨论】:

    猜你喜欢
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 2021-02-16
    相关资源
    最近更新 更多