Heim >Backend-Entwicklung >PHP-Tutorial >Probleme und Lösungsbeispiele zur MVC-Ausnahmebehandlung
In diesem Artikel werden hauptsächlich die relevanten Informationen zu MVCAusnahmebehandlung im Detail vorgestellt. Interessierte Freunde können sich darauf beziehen
In der täglichen Entwicklung Normalerweise werden bei unserer Methode Try-Catch-Blöcke an den Stellen hinzugefügt, an denen eine Ausnahmebehandlung erforderlich ist Wir Programmierer, die von Natur aus „faul“ sind, wollen immer eine Abkürzung finden. Daher wird es eine globale Ausnahmebehandlung geben. Deshalb werfen wir heute einen Blick darauf, wie man eine globale Ausnahmebehandlung in MVC durchführt.
1. MVCFrameworkseine eigene globale Ausnahmebehandlung
In MVC hat uns das Framework eine Reihe globaler Ausnahmebehandlungsfunktionen zur Verfügung gestellt dleErrorAttribute-Klasse. Eine solche Codezeile finden wir in der Datei FilterConfig.cs im Ordner App_Start in MVC
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); }
Dies dient dazu, eine HandleErrorAttribute-Klasse zu instanziieren und in Filter. Dann gibt es eine Error.cshtml-Seite in unserem Views>Shared-Ordner. Der Typ von Model auf dieser Seite ist, was das MVC-Framework bereits für mich geschrieben hat , wir können es direkt verwenden.
Auf der Seite Error.cshtml können wir eine weitere Verarbeitung durchführen, umFehlerinformationen anzuzeigen und Fehlerinformationen entsprechend den Anforderungen anzuzeigen. Diese Fehlermeldungen finden sich in bestimmten Eigenschaften in der Klasse System.Web.Mvc.HandleErrorInfo.
Zum Beispiel: Das Folgende ist Error.cshtml. Wir schreiben bewusst eine Ausnahme in Control:public class HomeController : Controller { public ActionResult Index() { string i = "12a"; int j = Convert.ToInt32(i); return View(); } }Führen Sie es aus und schauen wir uns die Ergebnisse an . Das Obige ist das Ergebnis der Operation. Wir können sehen, dass die Klasse System.Web.Mvc.HandleErrorInfo noch viele umfangreiche Attribute hat, die wir direkt verwenden können.
Die von MVC bereitgestellte Standard-Ausnahmebehandlung besteht darin, Ausnahmen mit Fehlercodes der 500er-Serie zu behandeln. Wenn es 404 ist, wird dies nicht durchgeführt. Wir können es jedoch über die Einstellungen der Datei Web.config handhaben. Sehen Sie, wie wir damit umgehen.
Zuerst vervollständigen wir die Seite „Error.cshtml“ und fügen ihr ein Steuerelement hinzu. Anschließend schreiben wir eine Ansicht und ein Steuerelement speziell für die Behandlung von 404. Wie folgtnamespace Exception.Controllers { public class SharedController : Controller { // GET: Shares public ActionResult Error() { return View(); } public ActionResult NotFondError() { return View(); } } }Seite: Dann schreiben wir eine falsche Adresse in die Browseradresse, siehe hier sind die Ergebnisse:
2. Ausnahmebehandlung in MVC neu schreiben
In der Entwicklung haben wir oft eine solche Anforderung, die wir brauchen Um Ausnahmen über Textprotokolle aufzuzeichnen und zu speichern, verfügt die MVC-eigene Ausnahmebehandlungsmethode System.Web.Mvc.HandleErrorInfo nicht über eine solche Funktion, sodass wir sie so umschreiben können, dass sie über diese Funktion verfügt. Schauen wir uns als Nächstes an, wie man es umschreibt. Zuerst erstellen wir eine Klasse, lassen diese Klassepublic class CustomHandleErrorAttribute : HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { base.OnException(filterContext); var err = filterContext.Exception.Message;//错误内容 //============================= //将错误记录到日志中 //============================= } }Dann fügen Sie FilterConfig.cs hinzu:
public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new CustomHandleErrorAttribute()); } }Auf diese Weise können wir den Vorgang abschließen Unsere Bedürfnisse sind gestiegen.
Das obige ist der detaillierte Inhalt vonProbleme und Lösungsbeispiele zur MVC-Ausnahmebehandlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!