Asp.Net Core-异常处理

在这一章,我们将讨论异常和错误处理。当 ASP.NET Core应用程序中发生错误时,您可以以各种不同的方式来处理。让我们来看看通过添加一个中间件来处理异常情况,这个中间件将帮助我们处理错误。

要模拟出错,让我们转到应用程序,运行,如果我们只是抛出异常的话,看看程序是如何运转转的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using  Microsoft.AspNet.Builder; 
using  Microsoft.AspNet.Hosting; 
using  Microsoft.AspNet.Http; 
using  Microsoft.Extensions.DependencyInjection; 
using  Microsoft.Extensions.Configuration;  
namespace  FirstAppDemo { 
    public  class  Startup { 
       public  Startup() { 
          var builder =  new  ConfigurationBuilder() 
             .AddJsonFile( "AppSettings.json" ); 
          Configuration = builder.Build(); 
       }  
       public  IConfiguration Configuration {  get set ; }  
         
       // This method gets called by the runtime. 
       // Use this method to add services to the container. 
       // For more information on how to configure your application, 
       public  void  ConfigureServices(IServiceCollection services) { 
       }  
       
       // This method gets called by the runtime. 
       // Use this method to configure the HTTP request pipeline.
       public  void  Configure(IApplicationBuilder app) { 
          app.UseIISPlatformHandler();  
          app.UseRuntimeInfoPage();  
          
          app.Run(async (context) => { 
             throw  new  System.Exception( "Throw Exception" ); 
             var msg = Configuration[ "message" ]; 
             await context.Response.WriteAsync(msg); 
          });  
       }  
         
       // Entry point for the application. 
       public  static  void  Main( string [] args) => WebApplication.Run<Startup>(args); 
    }   
}


它只会抛出一个非常通用的异常信息。保存Startup.cs页面并运行您的应用程序。


您将看到我们未能加载此资源。出现了一个 HTTP 500 错误,内部服务器错误,那个页面不是很有帮助。它可能很方便得到一些异常信息。

让我们添加另一个中间件 UseDeveloperExceptionPage。

1
2
3
4
5
6
7
8
9
10
11
12
13
// This method gets called by the runtime.  
// Use this method to configure the HTTP request pipeline. 
public  void  Configure(IApplicationBuilder app) { 
    app.UseIISPlatformHandler();  
    app.UseDeveloperExceptionPage(); 
    app.UseRuntimeInfoPage();  
    
    app.Run(async (context) => { 
       throw  new  System.Exception( "Throw Exception" ); 
       var msg = Configuration[ "message" ]; 
       await context.Response.WriteAsync(msg); 
    });  
}


这个中间件与其他的有点不同,其他中间件通常监听传入的请求并对请求做一些响应。

UseDeveloperExceptionPage不会如此在意传入的请求在之后的管道会发生什么。

它只是调用下一个中间件,然后再等待,看看管道中是否会出现异常,如果有异常,这块中间件会给你一个关于该异常的错误页面。

现在让我们再次运行应用程序。将会产生一个如下面的屏幕截图所示的输出。


现在如果程序中出现异常,您将在页面中看到一些想要看到的异常信息。你也会得到一个堆栈跟踪:这里可以看到Startup.cs第37行有一个未处理的异常抛出。

所有这些异常信息对开发人员将非常有用。事实上,我们可能只希望当开发人员运行应用程序时才显示这些异常信息。

版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: Asp.Net Core-异常处理 
本文地址:http://www.yuanjiaocheng.net/ASPNET-CORE/core-exception.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值