8
ExceptionFilterAttributeで処理された例外をマークする方法はありますか?Web API ExceptionFilterAttributeで設定された例外を設定する
メソッドレベルで例外フィルタを使用して例外を処理し、グローバルに登録された例外フィルタへの伝達を停止したいとします。コントローラのアクションで使用
フィルタ:
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;
}
}
}
グローバルに登録フィルタ:
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)
};
}
}
}
「例外フィルタを使用してメソッドレベルで例外を処理する」サンプルを用意してください。 – giacomelli
グローバルフィルタを取得するためには、私が思う最初の方法で例外を処理しなくてはなりません。なぜなら、 'try/catch'ブロックで安全でないコードをラップしてそこで処理するのはなぜですか? –
例が追加されました。 – adamwtiko