2009-10-13 9 views
18

Ist es OK, meine Ausnahmen in den Aktionen des Controllers zu fangen? Gibt es einen besseren Weg? Ich erwische meine Ausnahmen im Controller und verwende TempData, um dem Benutzer eine Nachricht anzuzeigen, aber ich habe ein komisches Gefühl bei diesem Ansatz. Ich habe herumgesucht, aber ich habe nichts gefunden, was mir passt.ASP.NET MVC Ausnahmebehandlung

+0

Das ist alt, aber ich wollte nur Stellen Sie meinen Beitrag als ref (** Probleme mit HandleError **) während der Weitergabe von - http://stackoverflow.com/questions/12183653/mvc-handleerror-filter-didnt-catch-an-exception –

Antwort

11

Sie können das HandleError-Attribut in der Controller-Klasse verwenden, um alle nicht behandelten Ausnahmen abzufangen, und es wird automatisch die Error.aspx-Ansicht im freigegebenen Ordner zurückgegeben. Es gibt Überlastungen für dieses Attribut, so dass Sie sich nur für bestimmte Ausnahmetypen verwendet haben können, usw.

Weitere Informationen zu diesem Ansatz Besuche ScottGu die Post darüber: http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx

+0

Dies ist interessant, aber die Andersherum kann ich zu den Standardansichten umleiten (zB "Index") und eine personalisierte Nachricht für die konkrete Ausnahme anzeigen ... –

+0

Die Seiten Error.aspx sind an die Klasse HandleErrorInfo gebunden, die die Eigenschaften der Ausnahme offen legt. Wenn Sie eine personalisierte Ausnahmebedingungsnachricht senden, können Sie diese für die Ansicht rendern. Steve Sandersons Buch "Pro ASP.NET MVC Framework" behandelt einige Möglichkeiten, dies zu tun, und auch, wie Sie Ihre eigenen Ausnahmefilter erstellen. Ich würde empfehlen, dieses Buch aufzuheben. – mkchandler

+0

Vielleicht erweitern Sie den HandleError, um die TempData zu definieren? Ich denke, ich werde das untersuchen. Danke ... –