ASP.Net Exceptions - Поймать страницу или обработать в Global.asax (Application_Error) - PullRequest
1 голос
/ 27 января 2011

Здесь вы найдете ответы, ориентированные на лучшие практики, с пояснениями.

Должен ли уровень представления приложения ASP.Net перехватывать и обрабатывать исключения, выбрасываемые из бизнес-уровня, или им следует разрешать всплывать, где все они могут регистрироваться и обрабатываться единообразно в Global.ascx s Application_Error обработчик?

есть ..

    protected void Application_Error(object sender, EventArgs e)
    {
        logExceptionDetails(Server.GetLastError());
        HttpContext.Current.Server.Transfer("~/Error.aspx");;
    }

Спасибо

Ответы [ 2 ]

5 голосов
/ 27 января 2011

Мой подход к исключениям состоит в том, чтобы позволить им произойти и зарегистрировать их с помощью Elmah и использовать встроенный механизм Custom Error Page , чтобы уведомить моего пользователя о том, что что-то пошло не так.

Все это можно сделать с нулевым кодом (настроено в web.config).

0 голосов
/ 27 января 2011

Что ж, если вам нужно действительно "обработать" исключение, вам понадобятся блоки try-catch в вашем коде, где могут возникнуть исключения.

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

Однако, если вы просматриваете исключения из журнала, которые были «необработанными», то вам следует использовать событие Global Error, как вы показали. Это лучшая практика. Фактически, если вы реализуете это как HttpModule, тогда ваша обработка исключений не будет навязчивой и может подключаться к другим приложениям или удаляться простым изменением файла web.config.

Взгляните на эту статью на 4GuysFromRolla

http://www.4guysfromrolla.com/articles/081209-1.aspx

...