У меня есть класс:
class Foo
{
public Foo(string bar)
{
if (string.IsNullOrEmpty(bar))
throw new Exception("bar must not be null or empty.");
}
}
Каков самый правильный тип исключения для броска?
К жизнеспособным кандидатам относятся:
-
ArgumentNullException -
ArgumentException -
InvalidOperationException -
(не в соответствии с dasblinkenlight ниже)TypeInitializationException
Мой инстинкт состоит в том, чтобы пойти с InvalidOperationException, поскольку вызывающий пытается создать объект в незаконном состоянии, хотя ArgumentException имеет также достоинства.
Мне жаль, что не было StringNullOrEmptyException, разве это не здорово?
Edit Спасибо за предложенный вопрос, это похоже, но я спрашивал конкретно об этом, происходящем в конструкторе, и может ли это вообще изменить рекомендацию.