我想在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