Я работаю с WebApi и ELMAH, и я хотел бы иметь возможность обернуть некоторые бизнес-ошибки в веб-ответы для некоторых типов исключений (без протоколирования), а другие регистрируются ELMAH. Правильно нет, у меня есть этот кусок кода.Не регистрировать обработанные исключения с помощью ELMAH
public async override Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)
{
try
{
return await base.ExecuteAsync(controllerContext, cancellationToken);
}
catch (MyException ex)
{
return new HttpResponseMessage(CustomCode)
{
Content = new StringContent(CustomMessage)
};
}
catch (Exception ex)
{
Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
return new HttpResponseMessage(HttpStatusCode.InternalServerError)
{
Content = new StringContent("Ups! Something went wrong. Please try again or contact administrator!")
};
}
}
Проблема Я ожидаю, что ELMAH зарегистрирует только необработанные исключения. В моем случае регистрируется даже исключение типа MyException, хотя оно блокируется блоком catch.
Есть ли какая-либо конфигурация, которую я могу применить к ELMAH, чтобы сделать запись в журнал только необработанными?
ELMAH cacthes все исключения? Речь идет не только о необработанных исключениях? Я хотел бы регистрировать только необработанные исключения. – bbeda
Вы можете поймать свои собственные исключения и вернуть желаемый ответ для этого. Не поймайте необработанные исключения, используя общий блок catch (исключение catch). Пусть ELMAH справится с этой ошибкой. – ThomasArdal
Я поймаю это общее исключение, потому что я также хотел бы вернуть его клиенту в качестве более удобного для пользователя сообщения. – bbeda