代码之家  ›  专栏  ›  技术社区  ›  Paul Turner

例外工厂的价值是什么?

  •  6
  • Paul Turner  · 技术社区  · 14 年前

    在查看WCF库中反映的一些代码时,我看到了用于创建异常的模式:

    if(argument == null)
    {
        throw Error.ArgumentNull("argument");
    }
    

    空参数是最简单的示例,通过静态错误类提供其他类型的异常。

    这种工厂模式的价值是什么?为什么不使用 new 接线员,只需呼叫 ArgumentNullException 构造函数?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Joel Etherton    14 年前

    我发现的最大原因是标准化在特定开发团队(或团队)的框架内如何处理和定义异常。甚至微软也发布了各种异常类型在异常、系统异常和应用程序异常之间并不是特别标准的。可能是异常的需求可能会有所不同,这取决于管理特定逻辑案例的规则。它还可用于从开发人员的日常问题中删除常见任务(如日志记录)。开发人员所要做的就是在工厂中使用适当的异常,工厂负责其余的工作。

        2
  •  5
  •   Hans Passant    14 年前

    我认为主要原因是.NET异常消息是本地化的。需要从字符串资源中检索实际的消息文本。最好把这种代码放在一个地方,这样就不会有人摸索字符串资源名。

    使用工厂以便调整实际异常类型的想法让我觉得不太有用。这样做可能会破坏很多客户机代码,无论出于什么原因,都会试图捕获该异常。一旦你发布了抛出一个特定异常的代码,你就会被它卡住。明智地选择:)

        3
  •  0
  •   Sam Holder    14 年前

    工厂可以执行额外的工作,比如记录异常?