Heim  >  Artikel  >  Backend-Entwicklung  >  Verwandte Behandlung von MVC-Ausnahmen

Verwandte Behandlung von MVC-Ausnahmen

巴扎黑
巴扎黑Original
2017-08-08 13:18:151672Durchsuche

In diesem Artikel werden hauptsächlich die relevanten Informationen zur MVC-Ausnahmebehandlung im Detail vorgestellt, die einen gewissen Referenzwert haben.

In der täglichen Entwicklung werden wir normalerweise viele Ausnahmen abfangen Unsere Methode besteht darin, Try-Catch-Blöcke dort hinzuzufügen, wo eine Ausnahmebehandlung erforderlich ist. Wenn es jedoch viele Stellen gibt, an denen eine Ausnahmebehandlung erforderlich ist, werden Try-Catch-Blöcke häufig geschrieben. Für uns Programmierer, die von Natur aus „faul“ sind eine Verknüpfung 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. Die eigene globale Ausnahmebehandlung des MVC-Frameworks

In MVC hat uns das Framework eine Reihe globaler Ausnahmebehandlungs-Feature-Klassen zur Verfügung gestellt, die HandleErrorAttribute-Klasse. Wir finden diese Codezeile in der Datei FilterConfig.cs im Ordner App_Start in MVC


public static void RegisterGlobalFilters(GlobalFilterCollection filters)
 {
    filters.Add(new HandleErrorAttribute());
  }

Damit wird eine HandleErrorAttribute-Klasse instanziiert und in den Filter eingefügt Mitte. Dann gibt es eine Error.cshtml-Seite in unserem Views>Shared-Ordner. Der Modelltyp auf dieser Seite ist vom MVC-Framework für mich geschrieben.

Auf der Seite Error.cshtml können wir eine weitere Verarbeitung durchführen, um Fehlerinformationen anzuzeigen und Fehlerinformationen entsprechend den Anforderungen anzuzeigen. Diese Fehlermeldungen werden in bestimmten Eigenschaften in der Klasse System.Web.Mvc.HandleErrorInfo gefunden.

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 folgt


namespace 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 Klasse System.Web.Mvc.HandleErrorInfo erben und überschreiben dann die virtuelle Methode in System.Web.Mvc.HandleErrorInfo: OnException-Methode.


public 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 vonVerwandte Behandlung von MVC-Ausnahmen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn