У меня есть метод следующим образом:
Public Sub Send()
Dim caughtException As Exception = Nothing
Try
//Attempt action.
Catch ex As Exception //Custom exceptions which can be thrown all inherit from Exception.
//Instantiate error object to be logged.
caughtException = ex
End Try
//Log action and if there is an error log this too.
If caughtException IsNot Nothing Then Throw caughtException
End Sub
Крайне важно, чтобы я регистрировал ошибку для отчетов, что после исследования выбрасывание исключения является правильным решением. Что меня беспокоит, так это сохранение информации о стеке.
Чтобы сохранить код СУХИМ, я регистрирую действие в одном месте - после того, как исключение было перехвачено.
Эта функциональность в конечном итоге предоставляется через WCF.