【发布时间】:2010-11-12 11:14:25
【问题描述】:
我们有一个属性,它的工作是查找描述。如果查找失败,它应该显示一个空字符串。
所以我们可以像这样对属性进行编码:
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 关键字(我没有这样做)构建异常很昂贵,或者他是否意味着允许发生异常是很昂贵的(就像我会做的那样)。
【问题讨论】:
标签: vb.net nullreferenceexception