Sử dụng Exceptions và Error Handling trong ASP.NET Core

 9/4/2019 |  Admin   2465 lượt xem

(netcore.vn) - Sử dụng Exceptions và Error Handling trong ASP.NET Core

Trong chương này, chúng tôi sẽ thảo luận về các trường hợp ngoại lệ và xử lý lỗi. Khi xảy ra lỗi trong ứng dụng ASP.NET Core của bạn, bạn có thể xử lý chúng theo nhiều cách khác nhau. Hãy cho chúng tôi xem một phần bổ sung của phần mềm trung gian có sẵn thông qua gói chẩn đoán. Phần trung gian này sẽ giúp chúng tôi xử lý lỗi.

Để mô phỏng một lỗi, chúng ta hãy truy cập app.Run và xem ứng dụng hoạt động như thế nào nếu chúng ta chỉ ném một ngoại lệ mỗi khi chúng ta nhấn vào phần mềm trung gian này.

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, 
      // visit http://go.microsoft.com/fwlink/?LinkID=398940 
      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); 
   }   
} 

Nó sẽ chỉ ném một ngoại lệ với một thông điệp rất chung chung. Lưu trang Startup.cs và chạy ứng dụng của bạn.

Generic Message

Bạn sẽ thấy rằng chúng tôi không thể tải tài nguyên này. Có lỗi HTTP 500, lỗi máy chủ nội bộ và điều đó không hữu ích lắm. Nó có thể là tốt đẹp để có được một số thông tin ngoại lệ.

Chúng ta hãy thêm một phần mềm trung gian khác, đó là UseDeveloperExceptionPage.

// 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); 
   });  
}
  • Phần mềm trung gian này hơi khác một chút so với các phần mềm trung gian khác, các phần mềm trung gian khác thường nhìn vào yêu cầu đến và đưa ra một số quyết định về yêu cầu đó.

  • UseDeveloperExceptionPage không quan tâm lắm đến các yêu cầu đến vì nó thực hiện những gì xảy ra sau đó trong đường ống.

  • Nó sẽ chỉ gọi vào phần tiếp theo của phần mềm trung gian, nhưng sau đó sẽ chờ xem liệu sau này trong đường ống có tạo ra ngoại lệ hay không và nếu có ngoại lệ, phần trung gian này sẽ cung cấp cho bạn một trang lỗi với một số thông tin bổ sung về ngoại lệ đó.

Bây giờ chúng ta hãy chạy lại ứng dụng. Nó sẽ tạo ra một đầu ra như trong ảnh chụp màn hình sau đây.

Internal Server Error

Bây giờ bạn sẽ thấy một số thông tin mà bạn mong đợi nếu có lỗi trong quá trình phát triển. Bạn cũng sẽ nhận được một dấu vết ngăn xếp và bạn có thể thấy rằng có một ngoại lệ chưa được xử lý được ném trên dòng 37 của Startup.cs.

Bạn cũng có thể xem chi tiết ngoại lệ thô và tất cả thông tin này có thể rất hữu ích cho nhà phát triển. Trên thực tế, có lẽ chúng tôi chỉ muốn hiển thị thông tin này khi nhà phát triển đang chạy ứng dụng.

liên quan

Tìm hiểu tất tần tật về Model Validation trong ASP.NET Core  3256

 2/23/2020

HTTP 400 Responses có gì mới trong web APIs của ASP.NET Core

Xem chi tiết 

HTTP 400 Responses có gì mới trong web APIs của ASP.NET Core  1918

 2/23/2020

HTTP 400 Responses có gì mới trong web APIs của ASP.NET Core

Xem chi tiết 

ASP.NET Core - Đăng nhập và đăng xuất  12130

 9/5/2019

Sau đây, NET Core VN xin giới thiệu 2 chức năng đăng nhập và đăng xuất trong ASP.NET Core.

Xem chi tiết 

ASP.NET Core - CRUD cho User module  3888

 9/5/2019

Sau đây, NET Core VN xin giới thiệu CRUD thông tin User trong ASP.NET Core.

Xem chi tiết 

Identity Migrations trong ASP.NET Core  2026

 9/5/2019

Sau đây, .NET Core VN xin giới thiệu về chạy migration cho Identity trong ASP.NET Core.

Xem chi tiết 

Cấu hình Identity trong ASP.NET Core  3075

 9/5/2019

Cấu hình Identity trong ASP.NET Core

Xem chi tiết 

Thuộc tính Authorize trong ASP.NET Core  3837

 9/5/2019

Thuộc tính Authorize trong ASP.NET Core

Xem chi tiết 

Tổng quan về Identity trong ASP.NET Core  3414

 9/5/2019

Tổng quan về Identity trong ASP.NET Core

Xem chi tiết 

ASP.NET Core - Razor Edit Form là gì?  1641

 9/5/2019

ASP.NET Core - Razor Edit Form là gì?

Xem chi tiết 

ASP.NET Core - Razor Tag Helpers là gì?  1846

 9/5/2019

ASP.NET Core - Razor Tag Helpers là gì?

Xem chi tiết 
Like Fanpage Để Ủng Hộ Chúng Tôi Duy Trì Website