处理控制器构造函数中发生的异常的最佳方法是什么?
我能想到的就是使用Application_OnError()或在我的ControllerFactory中放一个try / catch。
这些解决方案似乎都不理想。 Application_OnError是广泛的 - 我在站点中有一些非mvc内容,它们有自己的错误处理。
使用try / catch块似乎有点hacky。
如果我正在提供不同的内容类型-html / text / json / rss ....我希望能够在action方法中处理异常,而不必编写各种条件来确定要提供的错误信息。
我在这里遗漏了什么,还是有其他人处理过这个问题?
答案 0 :(得分:6)
如果首先在创建控制器时ControllerFactory
中发生异常,则无法在动作方法中处理异常。
就个人而言,我只是尝试一下try / catch,实例化一些错误处理控制器,然后通过它来路由请求。
一个更好的问题是 - 你的控制器如此依赖于什么是不能满足他们在构建时必须抛出异常?表面上看,简单地创建控制器不应该是异常的巨大来源。如果是,也许你可以看一下懒惰地在动作方法(而不是构造函数)中实例化依赖项,并实现ErrorHandlingController
approach。这会将异常“向下”推入控制器本身,因此您可以采用更加以控制器为中心的方法来处理它们。