2013-12-17 63 views
3

是否有等效於Visual Basic的對錯誤繼續下一個對於C++其中如果發生錯誤,代碼會繼續執行而不會提示用戶?Visual Basic的On Error Resume Next for 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(…) 
      { 

      } 
     } 
    } 

但你可能想要包裝另一個嘗試抓住整個地段。

+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

是的,我看到了,我的意思是:這是對的,但擴大你的答案! –