2014-09-10 4 views
0

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

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

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

+1

Да. Я считаю, что ELMAH (и подобные структуры) добавляют обработчик для 'AppDomain.UnhandledException' .., который находится по всему« AppDomain ». –

+0

ELMAH - отличный инструмент, но на самом деле он не * обрабатывает * исключения - он просто записывает их и делает информацию доступной для последующей проверки. Если вы хотите действительно * обработать * исключение (и сделать что-нибудь об этом, например, повторить или что-то еще), вам все равно делать это –

+0

Насколько я понимаю, elmah нуждается в httpcontext, чтобы получить сведения об исключении. Таким образом, он будет регистрировать исключения только из других слоев, если они будут выброшены. – iceburg

ответ

2

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^