微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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());
                }
            });
        });
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐