可能重复:
ArgumentNullException or NullReferenceException from extension method?
应该抛出哪个异常?
public static string DoStuff(this Control control)
{
if (control == null)
{
throw new ArgumentNullException();
}
// Code goes here...
}
我想到了以下内容:
我的选择是ArgumentNullException。这是对的吗?
答案 0 :(得分:4)
是的,在{IMO}这里做ArgumentNullException
是正确的。它仍然是一个参数,即使它可以用作扩展方法。
特别是,这就是LINQ to Objects所做的事情,例如使用the Select
method(以及所有其他Enumerable
扩展方法)。我说,请关注微软的领导。
编辑:我刚刚发现这是this question的副本,得到了贾里德帕森斯的回答。幸运的是,答案与我同意;)
答案 1 :(得分:0)
我会抛出NullReferenceException,因为这是普通实例方法抛出的内容。我希望我的扩展方法感觉像普通的实例方法。