【问题标题】:Handling Exceptions that happen in a asp.net MVC Controller Constructor处理在 asp.net MVC 控制器构造函数中发生的异常
【发布时间】:2010-04-22 22:02:58
【问题描述】:

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

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

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

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

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

我在这里遗漏了什么,或者其他人处理过这个问题吗?

【问题讨论】:

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


    【解决方案1】:

    如果一开始创建控制器时您的ControllerFactory 中发生异常,那么您将无法在操作方法中处理异常。

    我个人只会做一个 try/catch,实例化一些错误处理控制器,然后通过它路由请求。

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

    【讨论】:

    • 谢谢。我在初始化数据库连接的构造函数中有一些存储库连接代码。我现在懒加载它了。
    • 或注入一个工厂,该工厂具有捕获任何异常并正确处理它们的代码。
    猜你喜欢
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    相关资源
    最近更新 更多