2015-03-11 2 views
2

Есть ли какая-либо возможность/код, кроме использования try ... catch block для обработки исключений и дальнейшего ведения журнала. Мы разрабатываем веб-приложение с несколькими экранами. Клиент попросил нас не ставить try ... catch блоки в каждой функции/методы для обработки ошибок. Пожалуйста, предложите.Заменить try ... catch block in C#

Благодаря

+0

Есть ли причина, ваш клиент не хочет 'try' блоков? Другого пути я не могу описать, чтобы обрабатывать ошибки. – cybermonkey

+0

Ну нет, вы бы не поместили его в каждый метод. Обычно вы должны иметь более централизованную обработку исключений - и ASP.NET обычно делает это за вас, позволяя вам регистрировать страницу с ошибкой. Это зависит от того, какие исключения вы пытаетесь обработать, и что вы пытаетесь сделать, если они происходят. (Например, если вы делаете запрос веб-службы и хотите повторить попытку, вам может понадобиться попытка/уловка для этого, чтобы остановить ваш запрос всей веб-страницы от сбоя ...) –

+0

Возможный дубликат [ .NET. Каков наилучший способ реализации «catch all exceptions handler»] (http://stackoverflow.com/questions/219594/net-whats-the-best-way-to-implement-a-catch-all- exceptions-handler) – Paddy

ответ

2

Мы разрабатываем веб-приложение с парой экрана

Хотя требование вас клиент не имеет большой смысла для меня, но вы можете справиться с необработанным исключением, используя Application_Error событие в global.asax

void Application_Error(object sender, EventArgs e) 
{ 
    //Your logging code goes here 
} 

How to: Handle Application-Level Errors пример

Этот код показывает, как создать обработчик ошибок в Global.asax файл , который будет ловить все необработанные ошибки ASP.NET, а обработки запроса - другими словами, все ошибки, которые не пойман с помощью блока Try/Catch или в обработчике ошибок на уровне страницы. В примере обработчик передает управление на общую страницу ошибки с именем GenericErrorPage.aspx, которая интерпретирует ошибку и отображает соответствующее сообщение .

В качестве дополнительного примечания для приложения рабочего стола, как WinForms или окно услуг, которые вы можешь с помощью AppDomain.CurrentDomain.UnhandledException или Application.ThreadException т.д.

1

Вы можете использовать Application_Error в global.asax, этот метод обрабатывает ошибку для всех страниц в заявление.

для конкретной страницы например default.aspx, вы можете реализации Page_Error

+0

Приложения C# - это не только веб-приложения, а 'global.asax' используются только в веб-приложениях. – cybermonkey

+0

Поскольку @Yogesh разрабатывает веб-приложение, это решит его проблему, я думаю – Karthikeyan