2012-03-31 14 views
0

Ich habe einen Versuch Catch in meinem Code. Ich würde gerne wissen, ob es eine Aussage gibt, die nur ausgeführt wird, wenn keine Fehler gefunden werden? führt schließlich mit oder ohne Fehler, aber ich will das nicht ...Versuchen Catch keine Fehlererklärung

Ich habe diese

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

Und ich möchte, dass die letzte Status Aussage nur, wenn zeigen, dass es keine Fehler aufgetreten sind

+2

Der Körper des try-Block läuft nur so lange, wie es keine darin geworfen Ausnahmen. Sie brauchen wahrscheinlich nichts anderes, wenn Sie ein wenig darüber nachdenken. – Mat

+1

Verschieben Sie einfach diesen Status() -Aufruf nach dem DeleteDirectory-Aufruf. –

+0

Sie könnten eine Kombination von IF- und IF NOT-Anweisungen verwenden, um zu erhalten, was Sie wollten. –

Antwort

3

denke ich, etwas so einfaches wie dies ausreichen würde:

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

Oh, sobald es einen Fehler im try-Block gibt, springt es zur Catch-Anweisung? – thijsdemaa

+0

Ja das ist richtig – tcarvin

1

Wirklich Sie brauchen keine spezielle Anweisung

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 

ein häufiger Fehler Werfen Ex Inste verwendet Anzeige von nur Werfen. Der Unterschied ist subtil, aber sehr wichtig. Wenn Sie Throw Ex verwenden, überschreiben Sie den Stack-Trace, wodurch es schwierig wird, die ursprüngliche Zeile des fehlerhaften Codes zu finden.

+1

Sie müssen betonen, dass der catch-Block eine Return-Anweisung enthalten muss oder eine Ausnahme erneut auslösen muss. –