2012-07-03 2 views
5

Я повторно внедрен Enumerable.Zip (мой называется Merge). Это то же самое, что и оригинал, за исключением того, что MoveNext возвращает false перед другим (это означает, что последовательности не имеют одинаковую длину), это вызывает исключение.Какое исключение для броска, когда длины последовательностей не совпадают.

Мой вопрос: что было бы самым подходящим исключением из BCL, чтобы бросить здесь? (Я хочу, чтобы это близко имитировало остальные функции Enumerable (LINQ).)

+0

Первый человек, который хочет исключение с совершенным. –

+0

@NikhilAgrawal что-то не так с этим? –

ответ

3

Я думаю, что так как ваш второй массив будет аргументом. Так

System.ArgumentOutOfRangeException 

Подкласс ArgumentException, который бросил, когда (обычно числовое) аргумент слишком велик или слишком мал. Например, это бросается при передаче отрицательного числа в функцию, которая принимает только положительные значения.

или может быть

System.InvalidOperationException 

Метательными, когда состояние объекта не подходит для метода, чтобы успешно выполнить, независимо от каких-либо конкретных значений аргументов. Примеры включают чтение нераспечатанного файла или получение следующего элемента из перечислителя, где базовый список был изменен частично через итерацию.

+0

FWIW: Я пошел с 'System.ArgumentOutOfRangeException'. –

Смежные вопросы