2012-03-31 120 views
0

我有一個嘗試抓住我的代碼。我想知道是否有隻在沒有發現錯誤時執行的聲明? 最後有或沒有錯誤執行,但我不希望這樣......嘗試抓住沒有錯誤陳述

我有這個

Try 
      My.Computer.FileSystem.DeleteDirectory(txtFolder.Text, FileIO.DeleteDirectoryOption.DeleteAllContents) 
     Catch ex As Exception 
      Status(ex.Message) 
     End Try 
     Status("Resetted", , 2000) 

而且我想最後的狀態聲明只是爲了表明如果沒有錯誤

+2

try塊的主體只能運行,只要沒有在它拋出的異常。如果你想一點,你可能不需要任何其他東西。 – Mat 2012-03-31 13:01:39

+1

只需在DeleteDirectory調用後移動Status()調用即可。 – 2012-03-31 15:46:51

+0

您可以使用IF和IF NOT語句的組合來獲得您想要的內容。 – 2012-03-31 16:28:40

回答

3

我覺得這樣簡單的東西就足夠了:

Try 
    My.Computer.FileSystem.DeleteDirectory(txtFolder.Text, FileIO.DeleteDirectoryOption.DeleteAllContents) 
    Status("Resetted", , 2000) 'will only have reached here if there were NO exceptions 
Catch ex As Exception 
    Status(ex.Message) 
End Try 
+0

哦,只要try塊中有錯誤,它就會跳到Catch語句中? – thijsdemaa 2012-04-05 13:32:06

+0

是的,這是正確的 – tcarvin 2012-04-05 15:24:01

1

真的不需要

Try 

' Code to watch for exceptions 

Catch Ex as Exception 

' Code to handle exception and eventually, if it is not possible 
' to continue, exit from this method. There are two possibilities: 
' Return <some meaningful value to the caller if this is a function> 
' Throw -->> **without any argument** and let the caller handle the exception 
End Try 

' Code here will be executed only if the first try block doesn't throw exceptions 

一個常見的錯誤是使用扔防爆 inste特別聲明只是的廣告投擲。差別很小,但非常重要。如果使用拋出Ex,則會覆蓋堆棧跟蹤,因此很難找到發生故障的代碼的原始行。

+1

您需要強調的是,catch塊必須包含Return語句或重新拋出異常。 – 2012-03-31 15:47:07