我想在catch語句之後運行一段代碼,不管發生了什麼異常,但只有當發生一些異常時。所以基本上這是一個最終聲明,需要執行一個異常。有沒有一種簡單的方法在Visual Basic中做到這一點?Visual basic「終於出現異常」
回答
無論是否存在異常,總是會調用If語句的finally塊。 MSDN
要做到這一點的唯一方法是讓另一個方法接受異常作爲參數並從異常捕獲中調用該方法。
Lame ...我想這樣會有更少的代碼,但是您提供的解決方案會使代碼更多。哦,好吧...... – SteveDeFacto
Lame或不是它的Try ... Catch ...最後的塊 –
您可以添加不同的異常塊,像這樣:
Try
' do operation
' Most specific:
Catch e As ApplicationException
' do something only if ApplicationException has occurred
' Least specific:
Catch e As Exception
Console.WriteLine("{0} Second exception caught.", e);
End Try
的規範如果ApplicationException發生,那麼Exception將不會執行。 – SteveDeFacto
是的,這是正確的,但不是你所追求的是什麼?如果發生某種異常,您希望執行一段不同的代碼。如果您需要爲每個異常執行代碼,則可以將其提取到方法並重用該方法。 finally關鍵字實際上不是你所追求的。這正是最終不適合的。最後總是在那裏執行,例外與否。 – Kenneth
如何
Dim isException As Boolean = False
Try
....
Catch ex As ApplicationException
isException = True
....
Catch ex As Exception
isException = True
....
Finally
If (isException)
....
End If
End Try
不值得。只有稍少的代碼,但稍微難以閱讀。 – SteveDeFacto
我更喜歡這個版本 - 當你在2年內查看代碼時,它會明白它的作用,但在另一個版本中,你會對嵌套的try/catch感到頭疼。 –
我不喜歡它,但如何對嵌套Try
:
Try
Try
....
Catch ex As ApplicationException
Throw
Catch ex As Exception
Throw
End Try
Catch
' This is your "finally"
End Try
不是我所希望的,但它會做。 – SteveDeFacto
事實上,不得不拋出另一個異常並不吸引人。儘管如此,仍然支持這一努力。 – SteveDeFacto
你實際上並沒有拋出另一個異常,只是重新拋出你已有的異常,所以你保持你的堆棧跟蹤和一切。但我同意,不是最優雅的代碼。 –
- 1. visual basic - MessageBox不出現
- 2. DirListBox中的Visual Basic Compatiblity DLL異常
- 3. Visual Basic文件中的格式異常
- 4. Visual Basic「未處理的異常」
- 5. 的Visual Basic。載有()空異常
- 6. 異常拋出終於和catch塊
- 7. 如何解決溢出異常,而從Visual Basic 2010
- 8. visual basic 2010 |繼續出現錯誤(UnauthorizedAccessException)
- 9. 拋出終止異常
- 10. 終止拋出異常
- 11. Visual Basic MsgBox退出
- 12. Visual Studio 2013崩潰時出現異常 - 任務調度程序拋出異常
- 13. 退出時出現異常
- 14. RESTClient實現拋出異常異常
- 15. Visual Studio在處理異常異常時出現異常,處理異常對話框
- 16. 溢出在Visual Basic 6
- 17. 輸出到Word的Visual Basic
- 18. Visual Basic中的DataGridView到PDF異常錯誤
- 19. HRESULT 0x80131047 Microsoft Visual Basic 2008中的異常表示調試時
- 20. 如何在Visual Basic中使用異常處理?
- 21. 如何捕捉異常在Visual Basic 2015年不VB.NET
- 22. 即使出現異常,JConsole也會始終返回成功
- 23. 將Hiberate 5.0.2.Final升級到5.2.6時出現異常。最終
- 24. JiraTestResultReporter.JiraReporter由於Jenkins中的異常錯誤而異常終止
- 25. Python異常終於沒有工作
- 26. 由於StackOverflowException異常終止C#進程
- 27. 一行出現異常
- 28. Spring項目出現異常
- 29. UiDevice.getInstance失敗,出現異常
- 30. 出現InvalidOperationException和NullReferenceException異常
那麼,它是什麼?無論有什麼例外,只有一些例外?你不能擁有它。 –
你的第一句話要求同時存在兩個相互排斥的條件。如果你給一些僞代碼,你可以避免一個倒票。有時你只需編寫所有的代碼,儘管看起來很麻煩。 –
代碼將是Joe Enos發佈的內容,但不包含布爾值。我不認爲它存在於視覺化的基礎上。 – SteveDeFacto