Exception工厂的价值是什么?

时间:2010-08-13 12:02:35

标签: .net exception factory

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

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

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

这种工厂模式的价值是多少?为什么不使用new运算符并简单地调用ArgumentNullException构造函数?

3 个答案:

答案 0 :(得分:5)

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

使用工厂以便可以调整实际异常类型的想法让我觉得不太有用。这样做可能会破坏许多客户端代码,无论出于何种原因,这些代码都会尝试捕获该异常。一旦你发出抛出特定异常的代码,你几乎就会陷入困境。明智地选择:)

答案 1 :(得分:2)

我发现的最大原因是标准化在特定开发团队(或团队)的框架内如何处理和定义异常。甚至Microsoft也发布了各种异常类型并不是Exception,SystemException和ApplicationException之间的特定标准。根据管理特定逻辑案例的规则,异常的需求可能会有所不同。它对于从开发人员的日常关注中删除常见任务(例如日志记录)也很有用。所有开发人员必须做的是在工厂中使用适当的例外,工厂负责其余的工作。

答案 2 :(得分:0)

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