2013-12-17 2 views
3

Есть ли эквивалент Visual Basic's On Error Resume Next для C++ где в случае возникновения ошибки код продолжает выполняться без запроса пользователя?Visual Basic's On Error Resume Next для C++?

В идеале хотелось бы поймать любые исключения и записать их в файл 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 
    } 
+1

Короткий ответ да, именно так: [исключения] (http://www.cplusplus.com/doc/tutorial/exceptions/). –

+1

@Adriano - нет, вы ошибаетесь, если в коде C++ возникла ошибка, цикл не будет продолжаться, в коде VB он будет. –

+0

@MattWilko Я не сказал, что его код правильный или как он должен его изменить (вот почему это комментарий вместо ответа), просто он должен использовать исключения (со ссылкой на учебник, позволяя ему увидеть, как они работает и как их использовать). –

ответ

4

Это было бы эквивалентом кода VB:

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

      } 
     } 
    } 

но вы можете захотеть p еще одна попытка захватить блок вокруг всей партии, а также.

+0

Спасибо, обертывание другого вокруг всей партии - хорошая идея. – BgreenDSI

5

Нет ничего подобного. Вам придется написать свой код, чтобы поймать и проглотить исключение. Что-то вроде этого:

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

Как это отличается (что бонус) от того, что OP написал в качестве примера? –

+0

@Adriano - В коде VB6, который он опубликовал, цикл будет выполняться 100 раз, даже если произошла ошибка. В коде C++ он опубликовал, что цикл завершится, когда будет выбрано исключение, поэтому не будет выполняться 100 раз. – Sean

+0

Да, я вижу, я имею в виду: это правильно, но расширьте свой ответ! –

Смежные вопросы