2010-04-22 57 views
4

处理控制器构造函数中发生的异常的最佳方法是什么?处理在asp.net MVC控制器构造函数中发生的异常

我所能想到的是使用Application_OnError()或在我的ControllerFactory中放置一个try/catch。

这些解决方案都不理想。 Application_OnError广泛 - 我有一些非mvc内容在网站上有自己的错误处理。

使用try/catch块看起来还挺有趣的。

如果我服务于不同的内容类型-html/text/json/rss ....我希望能够处理操作方法内的异常,而不必编写各种条件来确定什么样的错误信息服务。

我在这里错过了什么,或者有其他人处理过吗?

回答

6

如果在首先创建控制器时ControllerFactory中发生了异常,那么您无法在操作方法中处理该异常。

就我个人而言,我只是做一个try/catch,实例化一些错误处理控制器,并通过它转发请求。

一个更好的问题是 - 你的控制器如此依赖于那个控制器没有得到满足,他们在构造时必须抛出异常?表面上,简单地创建控制器不应该是一个巨大的例外来源。如果他们是,也许你可以看看懒惰地实例化动作方法(而不是构造函数)中的依赖关系,并实现ErrorHandlingController approach。这会将异常“向下”推入控制器本身,因此您可以采取更多以控制器为中心的方法来处理它们。

+0

谢谢。我在初始化数据库连接的构造函数中有一些存储库连接代码。我现在懒加载它。 – Jason 2010-04-23 15:04:56

+0

或注入一个有代码的工厂来捕捉任何异常并正确处理它们。 – 2015-07-10 19:00:17