小编Dan*_*Dan的帖子

VB.NET尝试使用多个Catch块捕获

这是一个非常奇怪的问题.我们有一个包含多个Catch块的Try Catch.第一个Catch块没有代码,只有注释.

Try
  'Some Code
Catch ex As ThreadAbortException
  'Do Nothing
Catch ex As Exception
  HandleException(ex)
End Try
Run Code Online (Sandbox Code Playgroud)

如果抛出ThreadAbortException以外的异常,则会被第二个Catch捕获,如预期的那样.但是,当在VS2010中单步执行代码时,ex对象在这种情况下是Nothing.到目前为止,我们已经找到了两种"修复"此问题的方法.

修复1:重命名第一个异常变量.

Try
  'Some Code
Catch tex As ThreadAbortException
  'Do Nothing
Catch ex As Exception
  HandleException(ex)
End Try
Run Code Online (Sandbox Code Playgroud)

修复2:将任何代码行添加到第一个Catch块.

Try
  'Some Code
Catch ex As ThreadAbortException
  Dim i As Integer = 1
Catch ex As Exception
  HandleException(ex)
End Try
Run Code Online (Sandbox Code Playgroud)

在任何上述情况下,HandleException中的代码在运行时似乎仍能正常运行.这是Visual Studio或调试器中的错误吗?或者我们在这里遗漏了什么,上面第一段代码无效?

这一切都在.NET 4.0中完成.

.net vb.net exception-handling exception .net-4.0

25
推荐指数
2
解决办法
2万
查看次数

标签 统计

.net ×1

.net-4.0 ×1

exception ×1

exception-handling ×1

vb.net ×1