2013-04-19 22 views
1

在VB中,用於錯誤捕獲有是否有錯誤/恢復下一個模式的VB等效的VB?

Public Sub MySub() 
    On Error GoTo Errr 
    'do stuff 
Errr: 
    'handle error 
    Resume Next 
End Sub 

它使用宏偉恢復下一個命令。

在Java中,你有一個try catch塊

try 
{ 
//some code 
} 
catch (Exception e) 
{ 
//handle error 
} 

這似乎捕捉到等同於VB錯誤,但具體沒有繼續下一個選項,所以Java只是錯誤後退出整個代碼塊,而不是在錯誤發生後嘗試運行代碼的其餘部分。有什麼方法可以在Java中獲得Resume Next的強大功能嗎?謝謝!

回答

1

只需將代碼放在catch塊後面,無論出現任何錯誤。

try { 
    // stuff that could cause error 
} catch(Exception e) { 
    // handle error 
} 

// do stuff 

如果你打算從catch塊拋出一個異常,但你還是想「做的東西」的代碼運行,你可以把它放在一個finally塊這樣的:

try { 
    // stuff that could cause error 
} catch(Exception e) { 
    // throw exception here 
} finally { 
    // do stuff that will run even when the exception is thrown 
} 
+0

這對我不好。將代碼放在最後或finally塊中假定我知道哪個代碼產生了錯誤,也就是說,假設我知道剩下的代碼將在末尾或finally塊中運行,但情況並非如此。此外,它只會觸發一次,而不是像Resume Next一樣會出現每個錯誤。儘管如此,感謝您的快速響應。 – chiliNUT

+3

'錯誤恢復下一個'只是說在出現錯誤的情況下繼續下一行。如果您不確定發生了什麼,並且您只想繼續下一行,不管哪一行導致錯誤,那麼您顯然希望忽略錯誤?如果你不知道是什麼造成的,很難正確處理異常,所以繼續看起來不太合適。你可以通過用try/catch塊包裝每一行來做到這一點,只是有一個空的catch來吞噬異常,但我會建議不要這樣做,因爲如果發生異常,你可能應該做些什麼。 – clav

+0

我目前正在這樣做,用try catch塊封裝每一行。所以我應該更具體一些,它是SQL代碼;大量的表格添加和下降。出於我的目的,我不需要處理錯誤,我只需要打印輸出異常,並繼續嘗試添加和刪除更多表。 – chiliNUT

0

在VB中沒有對應於VB的簡歷語句;在VB中,根據錯誤情況,您可以選擇繼續使用代碼中的特定標籤,以便在修復錯誤後重新運行代碼,類似於goto語句;這在java中是不可能的,除非你在循環中,那麼你可以使用繼續定義的標籤塊。