处理asp.net MVC控制器构造函数中发生的异常

时间:2010-04-22 22:02:59

标签: asp.net asp.net-mvc exception constructor controller

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

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

这些解决方案似乎都不理想。 Application_OnError是广泛的 - 我在站点中有一些非mvc内容,它们有自己的错误处理。

使用try / catch块似乎有点hacky。

如果我正在提供不同的内容类型-html / text / json / rss ....我希望能够在action方法中处理异常,而不必编写各种条件来确定要提供的错误信息。

我在这里遗漏了什么,还是有其他人处理过这个问题?

1 个答案:

答案 0 :(得分:6)

如果首先在创建控制器时ControllerFactory中发生异常,则无法在动作方法中处理异常。

就个人而言,我只是尝试一下try / catch,实例化一些错误处理控制器,然后通过它来路由请求。

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