我们有一个财产,其工作是查找说明。如果查找失败,它应该显示一个空字符串。Catch NullReferenceException或首先测试Nothing?
因此,我们可以像这样的代码属性:
If foo.bar Is Not Nothing Then
Return foo.bar.Description
Else
Return String.Empty
End If
但是,这涉及到执行foo.bar两次,如果这样做是昂贵的,它可能是这样的美好:
Dim b As bar = foo.bar
If b IsNot Nothing Then
Return b.Description
Else
Return String.Empty
End If
但我们真正想做的就是将任何一种错误当作空的描述。因此,在某些方面,这是简单的:
Try
Return foo.bar.Description
Catch e As NullReferenceException
Return String.Empty
End Try
但是否有任何问题(性能,纯度,其它?)只捕捉和忽略错误?
有时你看这是昂贵抛出异常,但我不知道作者是否意味着它是昂贵的建造使用了Throw
关键字(这我没有做)异常或他是否意味着它是昂贵的,以允许例外发生(就像我会这样做)。
+1一个很好的,很好解释的答案。并100%正确。 – 2010-11-12 13:30:44