栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

.net core 中使用IAsyncExceptionFilter 捕获全局异常,统一返回信息

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.net core 中使用IAsyncExceptionFilter 捕获全局异常,统一返回信息

新建一个API 项目(.net 6)

添加ExceptionHandel 类

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

namespace ExceptionFilter
{
    public class ExceptionHandel : IAsyncExceptionFilter
    {
        private readonly IWebHostEnvironment _webHostEnvironment;

        public ExceptionHandel(IWebHostEnvironment webHostEnvironment)
        {
            _webHostEnvironment = webHostEnvironment;
        }
        public Task OnExceptionAsync(ExceptionContext context)
        {
            string msg = string.Empty;
            if (_webHostEnvironment.IsDevelopment())
            {
                msg = context.Exception.ToString();
            }
            else
            {
                msg = $"服务器内部异常{context.ActionDescriptor.DisplayName}";
            }
            ObjectResult objectResult = new ObjectResult(new { code = 500, msg = msg });
            context.Result = objectResult;
            context.ExceptionHandled = true;
            return Task.CompletedTask;
        }
    }
}

注入

builder.Services.Configure(opt =>
{
    opt.Filters.Add();
});

制造一个报错的API

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace ExceptionFilter.Controllers
{
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class ValuesController : Controllerbase
    {
        [HttpGet]
        public Task getValue()
        {
            return System.IO.File.ReadAllLinesAsync("1.txt");
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/712748.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号