我重新實現了Enumerable.Zip
(我的名字叫做Merge
)。它與原始的一樣,除非一個枚舉器的MoveNext
在另一個枚舉器之前(指示序列長度不同)返回false,則會拋出異常。當序列長度不相同時拋出哪個異常
我的問題是:從BCL扔到這裏最合適的例外是什麼? (我希望這可以很好地模仿Enumerable
(LINQ)函數的其餘部分。)
我重新實現了Enumerable.Zip
(我的名字叫做Merge
)。它與原始的一樣,除非一個枚舉器的MoveNext
在另一個枚舉器之前(指示序列長度不同)返回false,則會拋出異常。當序列長度不相同時拋出哪個異常
我的問題是:從BCL扔到這裏最合適的例外是什麼? (我希望這可以很好地模仿Enumerable
(LINQ)函數的其餘部分。)
我認爲,因爲你的第二個數組將會是一個參數。因此,
System.ArgumentOutOfRangeException
當(通常是數字)參數太大或太小時拋出ArgumentException的子類。例如,將負數傳遞給只接受正值的函數時會拋出此錯誤。
,或者可以是
System.InvalidOperationException
當對象的狀態是不適合的方法來成功地執行,而不管任何特定的參數值的拋出。示例包括讀取未打開的文件或從枚舉器獲取下一個元素,其中基礎列表已在迭代過程中進行了部分修改。
FWIW:我用'System.ArgumentOutOfRangeException'去了。 –
第一個想要一個完美的異常的人。 –
@NikhilAgrawal有什麼不對嗎? –