Есть ли в .NET более конкретный тип исключения для этого случая или нет?
Нет. В платформе .Net нет более конкретного исключения, встроенного для вашего конкретного случая.
И хотя вы всегда можете создать свой собственный класс исключений, я думаю, что в большинстве случаевэто излишество.Я бы сказал, что ArgumentException
является правильным исключением в этой ситуации.
И что является лучшей практикой: указать в сообщении об исключении причину исключения или способ его устранения?
При создании исключения, которое вы включаете всообщение о том, что вызывает исключение, а не о том, как его исправить.
В этом конкретном случае я, вероятно, напишу что-то подобное в сообщении об ошибке:
"<ArrayParameterName> have and invalid length. Acceptable length is <x>"
Конечно, замените <ArrayParameterName>
наимя аргумента и <x>
до принятой длины.