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