2012-07-03 39 views
5

我重新實現了Enumerable.Zip(我的名字叫做Merge)。它與原始的一樣,除非一個枚舉器的MoveNext在另一個枚舉器之前(指示序列長度不同)返回false,則會拋出異常。當序列長度不相同時拋出哪個異常

我的問題是:從BCL扔到這裏最合適的例外是什麼? (我希望這可以很好地模仿Enumerable(LINQ)函數的其餘部分。)

+0

第一個想要一個完美的異常的人。 –

+0

@NikhilAgrawal有什麼不對嗎? –

回答

3

我認爲,因爲你的第二個數組將會是一個參數。因此,

System.ArgumentOutOfRangeException 

當(通常是數字)參數太大或太小時拋出ArgumentException的子類。例如,將負數傳遞給只接受正值的函數時會拋出此錯誤。

,或者可以是

System.InvalidOperationException 

當對象的狀態是不適合的方法來成功地執行,而不管任何特定的參數值的拋出。示例包括讀取未打開的文件或從枚舉器獲取下一個元素,其中基礎列表已在迭代過程中進行了部分修改。

+0

FWIW:我用'System.ArgumentOutOfRangeException'去了。 –