Простой способ отловить все необработанные исключения в C # .NET - PullRequest
29 голосов
/ 17 ноября 2008

У меня есть сайт, построенный на C # .NET, который имеет тенденцию генерировать довольно устойчивый поток тайм-аутов SQL от различных пользовательских элементов управления, и я хочу легко вставить некоторый код, чтобы перехватить все необработанные исключения и отправить их во что-то, что может их регистрировать и отобразить дружественное сообщение для пользователя.

Как мне при минимальных усилиях перехватить все необработанные исключения?

этот вопрос , кажется, говорит, что это невозможно, но это не имеет смысла для меня (и это касается .NET 1.1 в приложениях для Windows):

Ответы [ 13 ]

1 голос
/ 17 ноября 2008

При использовании .net 2.0 framework я использую встроенные службы мониторинга работоспособности. Здесь есть хорошая статья, описывающая этот метод: http://aspnet.4guysfromrolla.com/articles/031407-1.aspx

Если вы застряли с фреймворком 1.0, я бы использовал ELMAH: http://msdn.microsoft.com/en-us/library/aa479332.aspx

надеюсь, это поможет

1 голос
/ 17 ноября 2008

Я бы порекомендовал посмотреть на log4net и посмотреть, подходит ли это для регистрации вопроса.

0 голосов
/ 18 марта 2015

Это старый вопрос, но лучший метод (для меня) здесь не указан. Итак, вот мы:

ExceptionFilterAttribute - хорошее и простое решение для меня. Источник: http://weblogs.asp.net/fredriknormen/asp-net-web-api-exception-handling.

public class ExceptionHandlingAttribute : ExceptionFilterAttribute
{
    public override void OnException(HttpActionExecutedContext context)
    {
        var exception = context.Exception;
        if(exception is SqlTimeoutException)
        {
            //do some handling for this type of exception
        }
    }
}

И прикрепить его к е.е. HomeController:

[ExceptionHandling]
public class HomeController: Controller
{

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...