Поймать исключение NullReferenceException или сначала проверить ничего?

У нас есть свойство, задача которого - искать описание. Если поиск завершится неудачно, должна отобразиться пустая строка.

Таким образом, мы можем закодировать свойство следующим образом:

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

Но есть ли проблемы (производительность, чистота, другое?), просто перехватывая и игнорируя ошибку?

Иногда вы читаете, что генерировать исключение дорого , но я не уверен, считает ли автор, что создание исключений с помощью дорого обходится ключевое слово (чего я не делаю) или означает ли он, что разрешать исключения дорого обходится (как я бы это делал).

9
задан Neolisk 17 January 2013 в 21:39
поделиться