gpt4 book ai didi

c# - 决定 ExceptionFilterAttribute OnException 方法的实现

转载 作者:行者123 更新时间:2023-11-30 23:08:38 26 4
gpt4 key购买 nike

我正在尝试使用 ExceptionFilterAttribute 为 Web Api 实现异常处理。我已经继承了ExceptionFilterAttribute 类并覆盖了onException 方法。

public class ApiLogExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
if (actionExecutedContext != null)
{
Logger.LogException(actionExecutedContext.Exception);
}
}
}

最近,我看到一些实现在覆盖实现中也调用了基类 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 以防万一当前实现发生变化,并且抽象基类中确实有任何操作。我没有在我的实现中调用它。

关于c# - 决定 ExceptionFilterAttribute OnException 方法的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46376241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com