Попробуйте поймать наконец блоки ... они мне все еще нужны при обработке ошибок в global.asax? - PullRequest
1 голос
/ 02 июня 2010

Я обрабатываю ошибки через мой global.asax следующим способом:

Dim CurrentException As Exception
CurrentException = Server.GetLastError()
Dim LogFilePath As String = Server.MapPath("~/Error/" & DateTime.Now.ToString("dd-MM-yy.HH.mm") & ".txt")
Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(LogFilePath)
sw.WriteLine(DateTime.Now.ToString)
sw.WriteLine(CurrentException.ToString())
sw.Close()

В моем коде у меня нет другой обработки ошибок. Стоит ли вставлять блоки try, catch, наконец?

Спасибо.

1 Ответ

2 голосов
/ 02 июня 2010

Абсолютно.

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

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

...