2011-12-09 1 views
1

Je regarde la gestion des erreurs. J'ai trouvé le code suivant:Quel genre de choses appellera une erreur d'application dans MVC?

protected void Application_Error(object sender, EventArgs e) 
    { 
     var exception = this.Server.GetLastError(); 

     this.Response.Clear(); 
     this.Server.ClearError(); 

     var errorRoute = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current)); 
     var tenant = errorRoute.Values["tenant"].ToString(); 

     var route = new RouteValueDictionary 
     { 
      { "controller", "Error" }, 
      { "action", "Index" }, 
      { "tenant", tenant } 
     }; 

     if (exception != null) 
     { 
      route.Add("message", exception.Message); 
     } 

     this.Response.RedirectToRoute(route); 
    } 

Mais qu'est-ce qui peut causer une erreur d'application? Serait-ce quelque chose généré par l'utilisateur quand il y a une entrée en double dans la base de données ou est-ce juste pour une sorte d'exception du système?

+0

Ma réponse est-elle utile? –

+0

Si la réponse de quelqu'un a répondu à votre question, n'oubliez pas de cliquer sur la coche à côté de leur [réponse] (http://meta.stackexchange.com/a/5235/171243). –

Répondre

3

Application_Error Cette méthode gère toutes les exceptions que votre application lance. Si vous souhaitez gérer une situation personnalisée comme entrée en double, vous pouvez lancer une exception comme ceci:

if(entriesDuplicated) 
{ 
    throw new Exception("The message that describes the error"); 
} 

Elle sera traitée dans la méthode Application_Error.

4

@cebirci a répondu à votre question. Cependant, je vous déconseillerais fortement d'utiliser Application_Error dans MVC car il existe des méthodes intégrées dans MVC pour gérer les erreurs.

Tout d'abord, vous avez [HandleError] attribut que vous pouvez décorer vos contrôleurs et/ou des actions avec. Il affichera la vue Shared\Error.cshtml chaque fois qu'une exception non gérée est interceptée.

Le problème avec [HandleError] est qu'il ne peut pas prendre en charge Not Found (404). Pour gérer 404, vous devez créer un contrôleur d'erreur et configurer customErrors dans web.config. Je le décris plus en détail dans my blog.

Questions connexes