Exception工厂的价值是什么?

Pau*_*ner 6 .net factory exception

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

if(argument == null)
{
    throw Error.ArgumentNull("argument");
}
Run Code Online (Sandbox Code Playgroud)

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

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

Han*_*ant 5

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

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


Joe*_*ton 2

我发现的最大原因是标准化在特定开发团队(或多个团队)的框架内处理和定义异常的方式。甚至微软也指出,各种异常类型在 Exception、SystemException 和 ApplicationException 之间并没有明确的标准。根据管理特定逻辑情况的规则,异常的需求可能会有所不同。它对于消除开发人员日常关注的常见任务(例如日志记录)也很有用。开发人员所要做的就是在工厂中使用适当的异常,工厂会处理其余的事情。