编程语言
首页 > 编程语言> > Ultimate ASP.NET CORE 6.0 Web API --- 读书笔记(5)

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

作者:互联网

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