Я поймал исключение! Что теперь? - PullRequest
69 голосов
/ 08 апреля 2010

Я начал использовать блоки try catch (немного поздно, я знаю!), Но теперь я не уверен, что делать с исключением, как только я его поймаю. Что мне делать?

Try
    connection.Open()
    Dim sqlCmd As New SqlCommand("do some SQL", connection)
    Dim sqlDa As New SqlDataAdapter(sqlCmd)
    sqlDa.Fill(dt)
Catch ex As SQLException
    ' Ahhhh, what to do now!!!?
Finally
    connection.Close()
End Try

Ответы [ 16 ]

1 голос
/ 08 апреля 2010

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

Если есть что-то, что вы можете сделать, сделайте это.Например, откатите транзакцию и сообщите об ошибке пользователю.Это будет зависеть от вашей заявки.

0 голосов
/ 16 июня 2015

Ну, Это зависит, прежде всего, если вы зарабатываете деньги из своего приложения или нет. По моему опыту, никому (кто заплатил за приложение) не нравится, когда оно ломается и закрывается, вместо этого они предпочитают короткое и поясняющее сообщение об ошибке и второй шанс продолжить то, что они делали, плюс возможность сохранить / экспортировать измененное приложение. данные. IMO - лучший способ поймать все, что может вызвать что-то неправильное, вне вашего контроля, например, операции ввода-вывода, задачи, связанные с сетью, например, т. Д. и отобразить соответствующее сообщение для пользователя. В случае, если выдается исключение из-за логической ошибки, лучше ее не перехватывать, поскольку это поможет вам найти и исправить фактическую ошибку.

Надеюсь, это поможет.

0 голосов
/ 18 июля 2011

В зависимости от типа приложения рассмотрите либо глобальный обработчик журналирования (т. Е. 'Application_Error' для приложений ASP.NET), либо использование предварительно созданного открытого источника или инфраструктуры обработки исключений, предоставляемой MSFT.

Блок приложения для обработки исключений , входящий в состав Enterprise Library 5.0, является рекомендуемой платформой для использования.

Помимо ведения журнала, я согласен с тем, что исключения не нужно явно отлавливать, если только вам не нужно сделать что-то значимое с ними. И худшая ошибка - просто «поймать», а затем «бросить» снова, так как это испортит StackTrace.

0 голосов
/ 08 апреля 2010

Если вы не хотите ничего с этим делать, вы всегда можете просто попробовать / наконец, а не пытаться / поймать / наконец

0 голосов
/ 08 апреля 2010

Это полностью зависит от контекста.Возможные варианты включают «Использовать данные по умолчанию вместо данных из базы данных» и «Отображать сообщение об ошибке пользователю».

0 голосов
/ 08 апреля 2010

Я бы посоветовал записать, что произошла исключительная ситуация, и уведомить пользователя, что вы не смогли выполнить его запрос.Это предполагает, что этот запрос SQL необходим для завершения действия, которое пытается выполнить пользователь.

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