2009-10-13 157 views
18

可以在控制器的操作中捕獲我的異常嗎?有沒有更好的方法來做到這一點?實際上,我在控制器中捕獲異常並使用TempData向用戶顯示消息,但對於這種方法我有一種奇怪的感覺。我一直在瀏覽,但我沒有找到任何適合我的東西。ASP.NET MVC異常處理

+0

這是舊的,但我只是想提供我的帖子作爲參考(**問題與HandleError **),而傳遞 - http://stackoverflow.com/questions/12183653/mvc-handleerror-filter-didnt-catch-an-exception – 2012-09-10 13:51:12

回答

11

您可以使用控制器類上的HandleError屬性來捕獲任何未處理的異常,並且它會自動返回共享文件夾中的Error.aspx視圖。有重載這個屬性,所以你只能把它用於某些異常類型等

有關此方法的更多信息,請訪問ScottGu的一篇關於它:http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx

+0

這很有趣,但其他方式我可以重定向到標準視圖(例如「索引」),並顯示具體異常的個性化消息... – 2009-10-13 21:13:40

+0

Error.aspx頁面綁定到HandleErrorInfo類,它暴露了異常的屬性。如果您要發送個性化的例外消息,則可以將其渲染到視圖中。 Steve Sanderson的書「Pro ASP.NET MVC框架」涵蓋了一些實現這一點的方法,以及如何創建自己的異常過濾器。我會推薦拿起那本書。 – mkchandler 2009-10-13 22:56:47

+0

也許擴展HandleError以允許定義TempData?我想我會對此進行調查。謝謝... – 2009-10-14 06:10:10