【问题标题】:Testing for NullReferenceException (Not Testing for Nothing)测试 NullReferenceException(不测试无)
【发布时间】:2023-03-14 23:13:01
【问题描述】:

我有一个其他人编写的课程,但我没有源代码。它有一个属性UM,由一个字符串_UM 支持。在某些情况下,_UMNothing。我希望UM 也将是Nothing,但是当我检查(使用快速观察)它显示为NullReferenceException 的属性时。当我尝试测试Nothing 时,我的主代码中抛出了NullReferenceException。我怎样才能捕捉到这种情况,以便妥善处理?

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

...抛出NullReferenceException

【问题讨论】:

  • 可能会抛出异常,因为FooNothing
  • Foo 不是什么。我可以看到的其他属性。
  • 尝试 ... 捕获 NullReferenceException ...

标签: .net null nullreferenceexception nothing


【解决方案1】:

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

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

【讨论】:

  • 我同意该属性除了返回_UM 之外可能还有其他作用,但是,我并不特别在意。我只需要测试并采取行动。关于如何做到这一点的任何想法?
  • 我希望避免这种情况,因为处理异常需要相当多的开销......哦,好吧。这门课在其他方面相当糟糕,我不应该感到惊讶。感谢您的建议。
  • 例如,您可以随时使用 Reflector 反编译外部 dll 并查看属性中实际发生的情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
相关资源
最近更新 更多