[Asp.Net Core]ExceptionFilter能捕捉到哪些异常

Posted 厦门德仔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Asp.Net Core]ExceptionFilter能捕捉到哪些异常相关的知识,希望对你有一定的参考价值。

1.控制器实例化异常 ----T

        public SeventhController(ILogger<SeventhController> logger)
        
            throw new Exception("控制实例化的时候,发生异常了。。");
        

2.异常发生在Try-cache中 —F

        public IActionResult IndexException01()
        
            try
            
                int i = 0;
                int j = 1;
                int k = j / i; //一定会发生异常;
            
            catch (Exception)
            

            
            return Json(new
            
                Message = "异常发生在Try-cache中"
            ); ;
        

3.在视图中发生异常 ----F


@
    ViewData["Title"] = "IndexException02";


<h1>this is  Seventh page</h1>

@
    int i = 0;
    int j = 1;
    int k = j / i; //一定会发生异常;


4.Service层发生异常 —T

        /// <summary>
        /// Service层发生异常 
        /// </summary>
        /// <returns></returns>
        public IActionResult IndexException03()
        
            ExceptionService exceptionService = new ExceptionService();
            exceptionService.Show();
            return View();
        

5.在action中发生异常 —T

        /// <summary>
        /// 在action中发生异常    
        /// </summary>
        /// <returns></returns>
        public IActionResult IndexException04()
        
            int i = 0;
            int j = 1;
            int k = j / i; //一定会发生异常;
            return View();
        

6.请求错误路径异常 —可以使用中间件来支持,只要不是200的状态,就都可以处理;

  #region 捕捉异常的补充 
            app.UseStatusCodePagesWithReExecute("/Home/Error/0");//只要不是200 都能进来
            app.UseExceptionHandler(errorApp =>
            
                errorApp.Run(async context =>
                
                    context.Response.StatusCode = 200;
                    context.Response.ContentType = "text/html";
                    await context.Response.WriteAsync("<html lang=\\"en\\"><body>\\r\\n");
                    await context.Response.WriteAsync("ERROR!<br><br>\\r\\n");
                    var exceptionHandlerPathFeature =
                        context.Features.Get<IExceptionHandlerPathFeature>();

                    Console.WriteLine("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
                    Console.WriteLine($"exceptionHandlerPathFeature?.Error.Message");
                    Console.WriteLine("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");

                    if (exceptionHandlerPathFeature?.Error is FileNotFoundException)
                    
                        await context.Response.WriteAsync("File error thrown!<br><br>\\r\\n");
                    
                    await context.Response.WriteAsync("<a href=\\"/\\">Home</a><br>\\r\\n");
                    await context.Response.WriteAsync("</body></html>\\r\\n");
                    await context.Response.WriteAsync(new string(' ', 512)); // IE padding
                );
            );
            #endregion

以上是关于[Asp.Net Core]ExceptionFilter能捕捉到哪些异常的主要内容,如果未能解决你的问题,请参考以下文章

Asp.NET Core进阶 第四篇 Asp.Net Core Blazor框架

.NET Core 1.0ASP.NET Core 1.0和EF Core 1.0简介

asp.net core 注入后仍然报错?

深入研究 Mini ASP.NET Core(迷你 ASP.NET Core),看看 ASP.NET Core 内部到底是如何运行的

.Net Core 学习 - ASP.NET Core 概念学习

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 14. ASP.NET Core Identity 入门