Избегайте попробовать / поймать ад на моих веб-страницах - PullRequest
2 голосов
/ 01 июня 2010

Я пишу сайт ASP.NET, который является для меня новой платформой. Я обнаружил, что у меня есть блок try / catch буквально в каждом методе моего кода. Все эти блоки try / catch делают, чтобы перехватить исключение и затем вывести сообщение об ошибке пользователю. Нет ли какого-нибудь глобального обработчика ошибок в ASP.NET? Стоит отметить, что моя обработка ошибок находится на контрольных страницах (ASCX), и я бы хотел, чтобы каждый ASCX просто обрабатывал свои собственные ошибки, не форсируя всю обработку ошибок только на одной главной странице или перенаправлении ...


Спасибо за совет ниже. Я попробовал Page_Error, так как это кажется положительным вариантом. Я выполнил тест, и мои исключения теперь выполняются через Page_Error, однако это не совсем работает ... Я использую Content.ClearError () в конце моего Page_Error, однако браузер клиента по-прежнему заканчивается необработанным PageRequestManagerServerErrorException. Любой совет? Если это помогает, я использую Telerik и пытаюсь открыть radalert всякий раз, когда происходит ошибка ...

Ответы [ 4 ]

7 голосов
/ 01 июня 2010

Вы можете реализовать обработчик событий Page_Error на уровне страницы . Это звучит как идеально подходит для того, что вы просили.

В противном случае, более глобально на уровне приложения , вы можете попробовать обработчик событий Application_Error в Global.asax.

См. Также http://msdn.microsoft.com/en-us/library/aa479319.aspx, который содержит много информации об обработке ошибок в asp.net.

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

Ознакомьтесь с global.asax документация . Файл global.asax содержит глобальный метод обработки ошибок. При возникновении ошибки вызывается метод Application_Error. Этот метод является хорошим местом для обработки и регистрации ошибок, поскольку он наиболее функциональный.

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

Вы можете установить узел CustomErrors в файле web.config. Таким образом, при возникновении исключения пользователь автоматически перенаправляется на страницу с дружественным сообщением об ошибке.

0 голосов
/ 01 июня 2010

Я бы рекомендовал использовать что-то вроде этого, вместо того, чтобы бросать исключения. Похоже, вы занимаетесь программированием на основе исключений

if(myTextBox.Text == "foo")
{
  this.RaiseError(); // method where you tell a label or something, where you say the user that and error (though no exception!) occured
}

То, что вы ищете, это свойство CustomError в web.config

<customErrors mode="On"    defaultRedirect="~/error.aspx" />

Так что, если есть незаполненное исключение, пользователь получает перенаправление на ошибку .aspx

...