2009-10-13 27 views
18

Czy można przechwycić moje wyjątki w działaniach kontrolera? Czy jest jakiś lepszy sposób na zrobienie tego? Właśnie łapię moje wyjątki w kontrolerze i używając TempData, aby pokazać wiadomość użytkownikowi, ale mam dziwne przeczucie tego podejścia. Przeglądałem, ale nie znalazłem niczego, co by mi pasowało.Obsługa wyjątków ASP.NET MVC

+0

To jest stary, ale ja po prostu chciałem podaj mój post jako ref (** problemy z HandleError **) podczas przechodzenia przez - http://stackoverflow.com/questions/12183653/mvc-handleerror-filter-didnt-catch-an-exception –

Odpowiedz

11

Można użyć atrybutu HandleError na klasie kontrolera, aby przechwycić nieobsługiwane wyjątki i automatycznie zwróci widok Error.aspx w folderze udostępnionym. Istnieje przeciążenia dla tego atrybutu, więc można mieć tylko ona stosowana w pewnych wyjątków, itp

Aby uzyskać więcej informacji na temat tego podejścia, sprawdź słupek ScottGu na temat: http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx

+0

To jest interesujące, ale w inny sposób mogę przekierować do standardowych widoków (np. "Index") i wyświetlić spersonalizowany komunikat dla konkretnego wyjątku ... –

+0

Strony Error.aspx są powiązane z klasą HandleErrorInfo, która eksponuje właściwości wyjątku. Jeśli wysyłasz spersonalizowaną wiadomość wyjątku, możesz ją renderować do widoku. Książka Steve'a Sandersona "Pro ASP.NET MVC Framework" obejmuje kilka sposobów na to, a także tworzenie własnych filtrów wyjątków. Polecam zabranie tej książki. – mkchandler

+0

Może rozszerzyć HandleError, aby umożliwić określenie TempData? Myślę, że to zbadam. Dzięki ... –