У нас есть свойство, задача которого - искать описание. Если поиск завершится неудачно, должна отобразиться пустая строка.
Таким образом, мы можем закодировать свойство следующим образом:
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
Но есть ли проблемы (производительность, чистота, другое?), просто перехватывая и игнорируя ошибку?
Иногда вы читаете, что генерировать исключение дорого , но я не уверен, считает ли автор, что создание исключений с помощью дорого обходится
ключевое слово (чего я не делаю) или означает ли он, что разрешать исключения дорого обходится (как я бы это делал).