Когда переопределять OnError? - PullRequest
5 голосов
/ 10 июня 2010

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

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

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

Ответы [ 3 ]

2 голосов
/ 14 июля 2010

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

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

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

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

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

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

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

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

HTH.

0 голосов
/ 13 июля 2010

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

...