我們有一個財產,其工作是查找說明。如果查找失敗,它應該顯示一個空字符串。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