代码之家  ›  专栏  ›  技术社区  ›  Oscar Cabrero

在Exceptions基类的代码上记录异常是一种好的设计方法吗?

  •  1
  • Oscar Cabrero  · 技术社区  · 16 年前

    一些朋友刚刚完成了一个应用程序的实现,他们使用了自定义例外。引起我注意的是,当引发自定义异常时,他们会将异常记录在他们实现的异常基类的代码中。所以我的问题是,这是一种好的设计方法吗?我的想法是日志助手更有用

     public class BaseCustomException: System.Exception
    {
    
       public BaseCustomException()
       {
                  TightlyCoupledClass.Log(this);
       }
    
    }
    
    5 回复  |  直到 16 年前
        1
  •  3
  •   casperOne    16 年前

    不,这是一种可怕的方法。IMO的原因是,假设创建的每个异常都会被抛出,但事实并非如此。

        2
  •  2
  •   Adam Carr    16 年前

    我理解他们的想法,这样他们就可以确保在抛出CustomException异常时进行日志记录;然而,这绝对是臭代码。


    --更正——我刚刚发现 this post 我并未意识到,这实际上使得使用ApplicationException变得毫无用处。

        3
  •  0
  •   Ray Hidayat    16 年前

        4
  •  0
  •   davogones    16 年前

    此解决方案耦合过于紧密,不可配置。我建议使用更健壮的异常处理框架,例如 Enterprise Library Exception Handling Application Block .

        5
  •  0
  •   Jason Plank Maksim Kondratyuk    13 年前

    对于构造函数中的日志,如果异常被包装并重新扫描以再次捕获,则异常将被记录两次,这是愚蠢的。

    catch ( CustomException exception ){
    Logger.error( "Really useful message", exception );
    }
    
    推荐文章