首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时在抛出异常后调用.net核心异常筛选器?

何时在抛出异常后调用.net核心异常筛选器?
EN

Stack Overflow用户
提问于 2019-01-28 19:51:50
回答 1查看 378关注 0票数 0

在我的api中,我有一个包含操作的标准Controller,该操作调用一个服务,然后调用客户端来联系其他第三方api。

我希望实现一个类似于以下内容的异常过滤器:

代码语言:javascript
复制
public class CustomExceptionFilterAttribute : ExceptionFilterAttribute
{
    private readonly IHostingEnvironment _hostingEnvironment;
    private readonly IModelMetadataProvider _modelMetadataProvider;

    public CustomExceptionFilterAttribute(
        IHostingEnvironment hostingEnvironment,
        IModelMetadataProvider modelMetadataProvider)
    {
        _hostingEnvironment = hostingEnvironment;
        _modelMetadataProvider = modelMetadataProvider;
    }

    public override void OnException(ExceptionContext context)
    {
        if (!_hostingEnvironment.IsDevelopment())
        {
            // do nothing
            return;
        }
        var result = new ViewResult {ViewName = "CustomError"};
        result.ViewData = new ViewDataDictionary(_modelMetadataProvider,context.ModelState);
        result.ViewData.Add("Exception", context.Exception);
        // TODO: Pass additional detailed data via ViewData
        context.Result = result;
    }
}

例如,如果我的客户机类抛出了一个异常,那么过滤器是否会立即被调用,即使我的服务类(它调用客户机类)已经准备好捕获这样的异常了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-28 20:10:22

不是的。根据您所指的文档,异常筛选器将只由未处理的异常触发;如果服务处理客户端异常并没有重新引发,则异常筛选器将不会触发。

异常过滤器:

  • 事件之前和之后没有。
  • 实现OnException或OnExceptionAsync。
  • 处理在控制器创建、模型绑定、操作筛选器或操作方法中发生的未处理的异常。
  • 不要捕获在资源筛选器、结果筛选器或MVC结果执行中出现的异常。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54409298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档