有没有什么时候Exception可以什么都没有?

时间:2015-11-20 20:46:04

标签: vb.net exception-handling

在尝试维护别人的代码时,我找到了这个小宝石:

 Catch ex As Exception
   If Not ex Is Nothing Then
     ...
   End If
Finally

有没有时间可能会发生我不知道的事情?我应该将这些添加到我的代码中吗?

2 个答案:

答案 0 :(得分:2)

如果您尝试这样做:

Try
    Dim x As Exception = Nothing
    Throw x
Catch ex As Exception
    Debug.Print(ex.ToString())
End Try

ex将是System.NullReferenceExceptionThrow statement文档没有提及如果您传递空引用会发生什么,但OpCodes.Throw文档说:

  

如果对象引用是空引用,则抛出NullReferenceException。

所以,我相信答案是ex永远不会是Nothing

答案 1 :(得分:1)

除非有GoTo语句将Exception ex重置为Nothing,否则代码似乎是多余的,因为控件进入Catch的唯一情况是从Try块抛出异常,而If Not条件比较Nothing的默认值等于Exception。这意味着条件永远不会被满足并且除了一些GoTo控件之外没有任何异常,