在尝试维护别人的代码时,我找到了这个小宝石:
Catch ex As Exception
If Not ex Is Nothing Then
...
End If
Finally
有没有时间可能会发生我不知道的事情?我应该将这些添加到我的代码中吗?
答案 0 :(得分:2)
如果您尝试这样做:
Try
Dim x As Exception = Nothing
Throw x
Catch ex As Exception
Debug.Print(ex.ToString())
End Try
ex
将是System.NullReferenceException
。 Throw
statement文档没有提及如果您传递空引用会发生什么,但OpCodes.Throw
文档说:
如果对象引用是空引用,则抛出NullReferenceException。
所以,我相信答案是ex
永远不会是Nothing
。
答案 1 :(得分:1)
除非有GoTo
语句将Exception ex
重置为Nothing
,否则代码似乎是多余的,因为控件进入Catch
的唯一情况是从Try
块抛出异常,而If Not
条件比较Nothing的默认值等于Exception。这意味着条件永远不会被满足并且除了一些GoTo控件之外没有任何异常,