Поймать исключение, войти в систему и выбросить - я правильно понял? - PullRequest
0 голосов
/ 10 ноября 2010

У меня есть метод следующим образом:

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.

Ответы [ 2 ]

6 голосов
/ 10 ноября 2010

Лучше войти в обработчик и затем скинуть оттуда. В противном случае вы потеряете стек и другие детали из исходного исключения.

Catch ex As Exception
LogException (ex)
Throw

Также при представлении функциональности через WCF следует убедиться, что код исключения доступен на стороне клиента, если у вас есть пользовательские исключения, так как необходимо транспортировать их с помощью ошибок WCF.

Это действительно важно, если потребитель не является .net, вам нужно раскрыть FaultContracts , которые содержат детали проблемы, которая будет декодирована клиентом. Подробности см. Здесь: Ошибка пользовательского исключения веб-службы WCF для клиента

1 голос
/ 15 ноября 2010

В vb.net лучше всего иногда записывать (регистрировать) исключение перед обработкой "throw".Конструкция «Catch Ex as WheverException When SomeConditionIsTrue» очень мощная.Обратите внимание, что условие может иметь побочные эффекты и будет оцениваться перед размоткой стека.Если код, который оценивает условие, имеет точку останова, точка останова будет достигнута до того, как исключение получит возможность инициировать какие-либо предложения Окончания ...из них).Кроме того, если исключение не будет обработано в противном случае, можно получить точку останова в том месте и контексте, где выбрасывается исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...