Czy jest jakiś sposób w interfejsie API środowiska ASP.NET do oznaczenia wyjątku jako obsługiwanego w obiekcie ExceptionFilterAttribute?Ustawianie wyjątku obsługiwanego w interfejsie API sieci Web ExceptionFilterAttribute
Chcę obsłużyć wyjątek na poziomie metody z filtrem wyjątków i zatrzymać propagację do globalnie zarejestrowanego filtru wyjątku.
Filter wykorzystywane na działania kontrolera:
public class MethodExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
if (context.Exception is NotImplementedException)
{
context.Response = new HttpResponseMessage(HttpStatusCode.InternalServerError)
{
Content = new StringContent(context.Exception.Message)
};
// here in MVC you could set context.ExceptionHandled = true;
}
}
}
rejestrowanego globalnie filtr:
public class GlobalExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
if (context.Exception is SomeOtherException)
{
context.Response = new HttpResponseMessage(HttpStatusCode.SomethingElse)
{
Content = new StringContent(context.Exception.Message)
};
}
}
}
Czy możesz podać przykład "obsługi wyjątku na poziomie metody z filtrem wyjątków"? – giacomelli
Aby dostać się do filtra globalnego, wyjątek musi być w pierwszej kolejności nieobsługiwany w metodzie - więc dlaczego nie owinąć niebezpiecznego kodu w bloku 'try/catch' i tam go obsłużyć? –
Dodano przykłady. – adamwtiko