Какой тип ошибки вы используете для функции, вызванной в неподходящее время? - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть класс Python 3, представляющий конечный автомат, с функциями для действий по переходу из состояния в состояние.

Какой тип ошибки я должен вызвать, если пользователь вызывает actor.take_train(), в то время как actor.state - это BED, или если пользователь звонит actor.sleep(), а actor.state - WORK? Этот последний случай, вероятно, также не рекомендуется на большинстве рабочих мест, но вы делаете это.

Вызов функции иногда допустим, но недействителен в других, и я не знаю, есть ли определенная ошибка, соответствующая повышение в этом случае.

Finite state machine Изображение предоставлено Фонд Гномов

1 Ответ

1 голос
/ 24 февраля 2020

Хорошо, если вы специально ищете исключение, вероятно, пользовательское, полученное из RuntimeError (ValueError будет самым близким из стандартных исключений, но оно не совсем соответствует).

Но ли даже выбрасывать исключение - это рассмотрение конкретного c варианта использования для конечного автомата, и что более полезно / удобно, например, вы можете просто зарегистрировать недопустимый сигнал и ничего не делать или вернуть заполнитель для некоторого сортировать.

...