Есть ли встроенный in.NET исключение, которое указывает на незаконное состояние объекта?
какое исключение я должен бросить, если я столкнусь с незаконным состоянием - например, метод инициализации, который должен быть вызван только один раз, вызывается во второй раз? Я действительно не вижу никакого встроенного исключения, которое имеет смысл. Это похоже на то, что должно быть в рамках - Я не тыкаю в нужном месте?
3 ответа:
InvalidOperationException может?
исключение, которое возникает, когда вызов метода недопустим для текущего состояния объекта.
В общем, вы должны запрограммировать свой объект таким образом что он не может достичь недопустимого состояния. Если вы обнаружите, что ваш объект находится в недопустимом состоянии, то вы должны бросить
SystemException
или исключение непосредственно СSystemException
. Это и есть ответ на вопрос в заголовке.однако, исключительное обстоятельство, что вы со ссылкой на в тексте вопроса-это пользователь вашего объекта толкая его в незаконное состояние. В таком случае
InvalidOperationException
является правильным исключением для броска, как указано в это более ранний ответ. Это позволит избежать вашего объекта начало в недопустимом состоянии.Излишне говорить, что вам нужно документ как ваш объект должен быть использован. Если ваш объект имеет длительный срок службы или если он используется / совместно используется между различными объектами, то это хорошо для пользователя, чтобы иметь возможность запросить текущее состояние и реализовать
ToString
для получения текущего состояния в виде текста, например, в среде отладки / log.