当序列长度不同时应该抛出哪个异常?

5
我重新实现了Enumerable.Zip(我自己的叫做Merge)。它与原始函数相同,只是如果一个枚举器的MoveNext在另一个枚举器之前返回false(表示序列长度不同),则会抛出异常。
我的问题是:在此处从BCL中抛出什么异常最合适?(我希望这与其余的Enumerable(LINQ)函数尽可能接近。)

第一个想要完美异常的人。 - Nikhil Agrawal
@NikhilAgrawal 这有什么问题吗? - Jonathon Reinhart
1个回答

3
我认为由于您的第二个数组将是一个参数。因此
System.ArgumentOutOfRangeException

ArgumentException的子类,通常在参数(通常是数字)过大或过小时抛出。例如,当向一个只接受正值的函数传递负数时,就会抛出此异常。

或者可能是:

System.InvalidOperationException

当对象的状态不适合成功执行方法时,会抛出此异常,而不考虑任何特定的参数值。例如,在未打开文件的情况下读取文件,或在枚举器遍历过程中修改基础列表后获取下一个元素。


顺便说一句:我选择了 System.ArgumentOutOfRangeException - Jonathon Reinhart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接