2012-04-17 71 views
0

我有一个其他人为我写的类没有源代码。它有一个属性UM,它由一个字符串_UM支持。在某些情况下,_UMNothing。我预计UM也会是Nothing,但是当我检查(使用快速观察)时,它显示为NullReferenceException。当我尝试测试Nothing时,我得到一个NullReferenceException在我的主代码中抛出。我怎样才能捕捉到这种情况,以便我可以正确处理它?测试NullReferenceException(不测试任何内容)

If Foo.UM Is Nothing Then 
    DoSomething() 
End If 

...抛出一个NullReferenceException

+2

可能会抛出异常,因为'Foo'是'Nothing'。 – Oded 2012-04-17 20:48:10

+0

Foo不是什么。其他属性我可以看到。 – cjbarth 2012-04-17 20:53:28

+0

try ... catch NullReferenceException ... – 2012-04-17 21:01:34

回答

1

该属性可能不仅仅是返回_UM字段。可能以某种方式使用它,并没有考虑到它可能是null。你可以做这样的事情来处理它:

Dim obj = Nothing 
Try 
    obj = Foo.UM 
Catch ex As NullReferenceException 
End Try 
If obj Is Nothing Then 
    DoSomething() 
End If 
+0

我同意该属性可能除了只返回'_UM'外,还有其他的一些东西,但是我并不特别在意。我只需要测试并采取行动。任何想法如何做到这一点? – cjbarth 2012-04-17 20:54:27

+0

我曾希望避免这种情况,因为处理异常会带来相当大的开销......噢。这个班在其他领域相当糟糕,我不应该感到惊讶。感谢您的建议。 – cjbarth 2012-04-17 21:05:36

+0

您可以随时通过Reflector反编译外部dll,并查看属性中实际发生的情况。 – Magnus 2012-04-17 21:17:37