决定 ExceptionFilterAttribute OnException 方法的实现
Deciding on implementation of ExceptionFilterAttribute OnException method
我正在尝试使用 ExceptionFilterAttribute 为 Web Api 实现异常处理。我继承了ExceptionFilterAttribute class 并覆盖了onException 方法。
public class ApiLogExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
if (actionExecutedContext != null)
{
Logger.LogException(actionExecutedContext.Exception);
}
}
}
最近,我看到一些实现在重写的实现中也调用了基础 class OnException 方法。
public class ApiLogExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
if (actionExecutedContext != null)
{
base.OnException(actionExecutedContext);
Logger.LogException(actionExecutedContext.Exception);
}
}
}
以上两种实施方式中哪一种是可取的?在这种情况下调用基本方法有什么用?
我有同样的问题,所以基于 https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/System.Web.Http/Filters/ExceptionFilterAttribute.cs(我希望它是当前的代码源)调用 base.OnException(actionExecutedContext);
没有意义
同样从过滤器的性质来看,您可以注册多个过滤器并且不需要继承来链接。
从理论上讲,您可以调用 base 以防万一当前实现发生变化,并且在抽象 base class 中确实做了任何事情。
我没有在我的实现中调用它。
我正在尝试使用 ExceptionFilterAttribute 为 Web Api 实现异常处理。我继承了ExceptionFilterAttribute class 并覆盖了onException 方法。
public class ApiLogExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
if (actionExecutedContext != null)
{
Logger.LogException(actionExecutedContext.Exception);
}
}
}
最近,我看到一些实现在重写的实现中也调用了基础 class OnException 方法。
public class ApiLogExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
if (actionExecutedContext != null)
{
base.OnException(actionExecutedContext);
Logger.LogException(actionExecutedContext.Exception);
}
}
}
以上两种实施方式中哪一种是可取的?在这种情况下调用基本方法有什么用?
我有同样的问题,所以基于 https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/System.Web.Http/Filters/ExceptionFilterAttribute.cs(我希望它是当前的代码源)调用 base.OnException(actionExecutedContext);
同样从过滤器的性质来看,您可以注册多个过滤器并且不需要继承来链接。 从理论上讲,您可以调用 base 以防万一当前实现发生变化,并且在抽象 base class 中确实做了任何事情。 我没有在我的实现中调用它。