2009-10-13 155 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