我正在使用依赖注入实现MVC站点。我有可能遇到错误的视图模型。我们认为将这些错误传达给相关控制器的最佳方法是抛出一些自定义异常。
我的问题:我想从一个公共基类派生这些异常,这些基类会写出有关日志中发生的错误的信息。但由于我们正在使用DI,我们的日志对象由IoC容器构建和控制。到目前为止,所有需要记录的对象都已由IoC容器构造和初始化。但是这些例外将在运行中创建。
最常见的解决方法是什么?我可以看到如何创建ExceptionFactory类,将记录器注入其中,然后将其注入视图模型。但这似乎并不是非常IoC'ish。
处理这种情况有一个共同的习惯用法吗?
答案 0 :(得分:0)
您可以为此目的使用装饰器或拦截器。
记录或错误过滤器是跨领域的问题,在控制器中写入它们没有任何损失也没有任何问题。
此外,你仍然可以将它们注入你想要的任何东西。
一切都不一定是IOC'ish。只要它有效,它应该没问题。
答案 1 :(得分:0)
我会回避让您的异常对象与记录器耦合。我可以看到一个异常对象知道如何格式化它的异常消息,但不记录它。
在相关的上游捕获异常并将其记录在那里。如果您的IoC容器支持它,您可以使用拦截来捕获和记录那里的异常。我会提供一些链接,但它可能比Google IoC和拦截更好,并根据您选择的框架决定您需要什么。
只需0.02美分,希望这会有所帮助。