Maison  >  Article  >  développement back-end  >  Gestion des exceptions et des erreurs ASP.NET Core (8)_Conseils pratiques

Gestion des exceptions et des erreurs ASP.NET Core (8)_Conseils pratiques

微波
微波original
2017-06-28 14:06:571529parcourir

Cet article présente principalement les informations pertinentes sur ASP.NET Exception de base et Gestion des erreurs en détail. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer.

Dans ce chapitre, nous discuterons de la gestion des exceptions et des erreurs. Lorsqu’une erreur se produit dans une application ASP.NET Core, vous pouvez la gérer de différentes manières. Examinons la gestion des exceptions en ajoutant un

middleware qui nous aidera à gérer les erreurs.

Pour simuler une erreur, allons dans l'application, exécutons-la et voyons comment le programme se comporte si nous

lancerons une exception.

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); 
 } 
}
Cela renvoie simplement un message d'exception très générique. Enregistrez la page Startup.cs et exécutez votre application.

Vous verrez que nous n'avons pas réussi à charger cette ressource. Il y a eu une erreur HTTP 500, Erreur interne du serveur, et cette page n'a pas été très utile. Il peut être pratique d'obtenir des informations sur les exceptions.

Ajoutons un autre middleware, 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); 
 }); 
}
Ce middleware est un peu différent des autres, qui écoutent généralement les demandes entrantes et répondent aux demandes.

UseDeveloperExceptionPage ne se soucie pas tellement de ce qui arrive à la requête entrante plus tard dans le pipeline.

Il appelle simplement le middleware suivant et attend ensuite de voir s'il y aura une exception dans le pipeline. S'il y a une exception, ce middleware vous donnera une page d'erreur concernant l'exception.

Maintenant, exécutons à nouveau l'application. Cela produira une sortie comme indiqué dans la capture d'écran ci-dessous.

Maintenant, si une exception se produit dans le programme, vous verrez certaines informations d'exception que vous souhaitez voir sur la page. Vous obtiendrez également une trace de pile : ici, vous pouvez voir qu'une exception non gérée a été levée à la ligne 37 de Startup.cs.

Toutes ces informations sur les exceptions seront très utiles aux développeurs. En fait, nous souhaitons peut-être que ces messages d'exception ne soient affichés que lorsque le développeur exécute l'application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn