ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Ultimate ASP.NET CORE 6.0 Web API --- 读书笔记(5)

2022-06-16 19:34:54  阅读:184  来源: 互联网

标签:CORE ASP 读书笔记 contextFeature context Error 错误处理 Response StatusCode


Global Error Handling

本文内容来自书籍: Marinko Spasojevic - Ultimate ASP.NET Core Web API - From Zero To Six-Figure Backend Developer (2nd edition)

错误处理,一般是使用try-catchblocks,然后是finally处理资源释放

但是会把这些处理逻辑零散地分布在代码中,如果将错误处理集中在一块区域,那么业务逻辑中的代码会变得更干净

5.1 Handling Errors Globally with the Built-In Middleware

UseExceptionHandler中间件是用来处理错误的

  1. 首先在Entities中创建ErrorModel/ErrorDetails,使用这个实体来包含错误的信息
  2. 然后在主项目中,注册中间件Extensions/ExceptionMiddlewareExtensions
public static class ExceptionMiddlewareExtensions
{
    public static void ConfigureExceptionHandler(this WebApplication app, ILoggerManager logger)
    {
        app.UseExceptionHandler(appError =>
        {
            appError.Run(async context =>
            {
                context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                context.Response.ContentType = "application/json";
                var contextFeature = context.Features.Get<IExceptionHandlerFeature>();
                if (contextFeature != null)
                {
                    logger.LogError($"Something went wrong: {contextFeature.Error}");
                    await context.Response.WriteAsync(new ErrorDetails()
                    {
                        StatusCode = context.Response.StatusCode,
                        Message = "Internal Server Error.",
                    }.ToString());
                }
            });
        });
    }
}

标签:CORE,ASP,读书笔记,contextFeature,context,Error,错误处理,Response,StatusCode
来源: https://www.cnblogs.com/huangwenhao1024/p/16383170.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有