zoukankan      html  css  js  c++  java
  • 使用ASP.NET Core 3.x 构建 RESTful API P15 处理故障

    使用ASP.NET Core 3.x 构建 RESTful API P15 处理故障


    博客园Id:


    异常的处理:
    在正常情况下,我们不应该直接让异常信息,暴露给接口的消费者,因为这个可能会暴露一些我们内部的一些业务的实现细节,并且在绝大多数情况下,异常的内容对于客户端来说是无用的,并且手动的去throw异常,或者通过try catch来处理异常,对性能的影响还是很大的,所以不建议这么做,但是在开发环境下,异常的抛出通常是有意义的,可以帮助开发人员更好的调试代码.

    Development 即开发环境下,抛出异常应该是一件很正常的事情.在 Production 即生产环境下,就不应该抛出异常了,但是在Production下,我们有的时候又想返回出一些通用的异常信息,给消费者,那么我们应该怎么做呢?我们可以在Startup.cs类的Configure方法中添加如下中间件,实例代码如下:

    if (env.IsDevelopment())    //判断当前运行的环境是否是开发环境
    {
                    /*
                     * 下列中间件是当,程序中有异常没有被捕获,通过此中间件会记录,并显示该异常信息
                     */
                    app.UseDeveloperExceptionPage();
    }
    else  //其他环境
    {
                    /*
                     * 当有未处理的异常时,
                     * 在UseExceptionHandler 中间件中,我们可以给返回的异常,进行通用化处理
                     */
                    app.UseExceptionHandler(appBuilder =>
                    {
                        appBuilder.Run(async context =>
                        {
                            //在实际项目中,我们可以在此处记录一下异常的日志
    
                            context.Response.StatusCode = 500;  //设置异常之后的 HttpStatusCode 都是500
                            await context.Response.WriteAsync("Unexpected Error!");  //指定返回的异常信息
                        });
                    });
    }

    上述代码的含义是,当当前运行环境为非Development时,当出现未捕获的以上发生时,我们如何规范的处理异常返回信息,以及如何记录日志的情况.

  • 相关阅读:
    hd2068错排+组合
    POJ 1061 青蛙的约会 扩展欧几里得
    POJ 2115 C Looooops扩展欧几里得
    扩展欧几里得算法
    欧拉函数模板
    高精度模板
    快速幂模板
    HDU 4445 Crazy Tank 高中物理知识忘得差不多了
    POJ 3087 Shuffle'm Up 模拟,看着不像搜索啊
    HDU 4452 Running Rabbits 模拟
  • 原文地址:https://www.cnblogs.com/HelloZyjS/p/12676436.html
Copyright © 2011-2022 走看看