Когда переопределить OnError?

Я изучаю переделку и упрощение нашей обработки ошибок в приложении, которое я поддерживаю. У нас в настоящее время есть все наши страницы, наследовавшиеся базовому классу, который мы создали, который в свою очередь, очевидно, наследовался Системе. Сеть. UI.Page. В этом базовом классе метод OnError в настоящее время переопределяется, и в свою очередь называющей MyBase. OnError и затем вызов одного из наших пользовательских методов журанлирования.

Я не вижу преимущества переопределения метода OnError, и я думаю, что было бы лучше позволить методу Application_Error в Global.asax заботиться о необработанном исключении (регистрирующий его), и затем раздел customErrors в конфигурации инициировал бы процесс для перенаправления пользователя.

Взгляд, онлайн, похоже, что люди переопределяют этот метод вполне часто, но я не вижу потребность к, и эта статья из MSDN заставляет меня думать то же.

5
задан Justin Helgerson 10 June 2010 в 16:38
поделиться

3 ответа

Я создаю пользовательский класс под названием PageBase:

public class PageBase : Page
{
  protected override void OnError(..)
  {
     //handle error, redirect to error page
  }
}

И поэтому мне нужно сделать это только один раз, и использовать его для перехвата необработанных ошибок и перенаправления на страницу ошибки. Таким образом, мне нужно сделать это один раз; я не знаю, что событие Page.Error имеет какие-либо плюсы или минусы по сравнению с ошибкой приложения; но я использую ошибку страницы, так как это может быть удобно; я могу очистить ошибку и перенаправить на страницу ошибки прямо в контексте страницы... мое личное предпочтение.

Спасибо за ссылку на MSDN; это был довольно хороший ресурс.

HTH.

2
ответ дан 15 December 2019 в 00:51
поделиться

Я видел сценарий, в котором, возможно, только некоторые страницы в приложении наследуются от базового класса и должны обрабатывать ошибки по-другому. Все другие ошибки будут обнаружены / зарегистрированы Application_Error

0
ответ дан 15 December 2019 в 00:51
поделиться

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

Также, я знаю, что это не относится к вашему вопросу, но я бы посмотрел на ELMAH для регистрации ошибок:

http://code.google.com/p/elmah/

2
ответ дан 15 December 2019 в 00:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: