В общем случае вы должны запрограммировать свой объект таким образом , чтобы он не мог достичь недопустимого состояния . Если вы обнаружите, что ваш объект находится в недопустимом состоянии, вы должны выбросить SystemException
или исключение , непосредственно полученное из SystemException
. Это ответ на вопрос в заголовке .
Однако, исключительное обстоятельство, что вы ссылаетесь на в тексте вопроса, это пользователь вашего объекта , переводящий его в недопустимое состояние. В этом случае InvalidOperationException
является правильным исключением для броска, как указано в в этом предыдущем ответе . Это позволит избежать попадания вашего объекта в недопустимое состояние.
Излишне говорить, что вам нужно документ , как использовать ваш объект. Если ваш объект имеет длительный срок службы или если он используется / совместно используется разными объектами, то для пользователя было бы удобно иметь возможность запрашивать текущее состояние и реализовывать ToString
для получения текущего состояния, например, в виде текста. в среде отладки / лог.