Обрабатывает ли Elmah необработанные исключения из других уровней?

Я новичок в Elmah и подумываю реализовать его в проекте. Это будет веб-проект ASP.NET MVC + Umbraco + EF, который будет иметь несколько уровней (Business, DAL и т. Д.).

Меня интересует Elmah его способность обрабатывать необработанные исключения.

Но вопрос в том, обрабатывает ли он необработанные исключения из других уровней (Services, Business, DAL и т. Д.) Или только из веб-уровня (ASP.NET MVC)?


person user576510    schedule 10.09.2014    source источник
comment
да. Я считаю, что ELMAH (и аналогичные структуры) добавляют обработчик для AppDomain.UnhandledException .., который используется во всем AppDomain.   -  person Simon Whitehead    schedule 10.09.2014
comment
ELMAH - отличный инструмент, но на самом деле он не обрабатывает исключения - он просто записывает их и делает детали доступными для последующей проверки. Если вы действительно хотите обработать исключение (и что-то с этим сделать, например, повторить попытку или что-то еще) - это все еще ваше дело.   -  person marc_s    schedule 10.09.2014
comment
Насколько я понимаю, elmah нужен httpcontext для получения сведений об исключении. Таким образом, он будет регистрировать исключения из других слоев, только если они будут выброшены.   -  person iceburg    schedule 10.09.2014


Ответы (1)


ELMAH обрабатывает любое исключение, возвращаемое клиенту. Это означает, что исключения, создаваемые на вашем уровне данных, не регистрируются, если вы перехватываете их на уровне MVC или где-либо еще. Обычно вы не хотите, чтобы исключения из нижних уровней попадали на клиента.

ELMAH также поддерживает ручную регистрацию ошибок через ErrorSignal, например:

try
{
    database.DoSomeStuff();
}
catch (SomeDatabaseException ex)
{
    Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
}
person ThomasArdal    schedule 10.09.2014