在ASP.NET MVC中,OnException是否应该用于应用程序异常?

时间:2009-07-15 07:23:28

标签: asp.net-mvc

我正在ASP.NET MVC中构建一个小应用程序。我仍然试图找到遇到的一些设计问题。

其中一个是使用例外。我已经构建了我的模型,以便在对象不存在或用户无法访问时抛出异常。在我看来,我认为我做出了正确的选择。

问题是,下一步是什么?我可以检查控制器中的异常,并重定向到不同的视图,但这似乎在许多控制器的许多操作中产生了很多相同的模式。

或者,我可以简单地避免检查异常并覆盖控制器的OnException方法(或我将使用的一些基本控制器类)来处理它。这样可以避免我的行为混乱。

从我发现的示例中,我可以看到HandleError和OnException如何用于记录未处理的异常(这是一件好事)并重定向到“抱歉!”页面,但我想知道您对使用该机制减少“无法预料”的例外情况的意见。

1 个答案:

答案 0 :(得分:3)

您应该检查HandleError属性。您可以指定应针对哪个例外显示哪个视图。 ASP.NET MVC HandleError这是特定于MVC的,对我而言比使用该事件感觉更“干净”。

除了HandleError之外,我还使用ELMAH来捕获和记录异常。

就个人而言,我试图达到这样的程度,即所有生成的异常都会在控制器级别被捕获,而不会超出此范围。但是,[handleerror]正是这样做 - 捕获错误并向用户显示相关的漂亮页面。

编辑:另请注意,您可以在控制器上指定此项,而不仅仅是操作。

詹姆斯