我今天讨论了重构这个问题(#1)
public void MyFunc(object myArgument)
{
if(myArgument == null)
throw new ArgumentNullException("myArgument");
....
有了这个(#2)
//inside a shared assembly in a class called Guard
public static void AgainstArgumentNull(object obj, string message)
{
if (obj == null)
throw new ArgumentNullException(message);
}
public void MyFunc(object myArgument)
{
Guard.AgainstArgumentNull(myArgument, "myArgument");
....
我的直觉是#1因为以下原因而更好:
我的问题是: 我的直觉是否正确? 我们从另一个程序集中抛出异常的事实在某些情况下不会成为麻烦吗?
答案 0 :(得分:3)
您还可以从#2中受益,在多个项目中在某种程度上标准化您的异常处理;抽象还使库能够在后一时间得到增强并重新分配,例如例如,错误记录。
答案 1 :(得分:1)
对于这种特殊情况,您不应该使用Guard
。您应该使用代码合同。
Contract.Requires(myArgument != null);