Есть ли аналог Java IllegalStateException в Python? - PullRequest
51 голосов
/ 09 ноября 2009

IllegalStateException часто используется в Java, когда метод вызывается для объекта в неподходящем состоянии. Что бы вы использовали вместо этого в Python?

Ответы [ 3 ]

39 голосов
/ 09 ноября 2009

В Python это будет ValueError или его подкласс.

Например, при попытке .read() закрытый файл вызывает «ValueError: операция ввода-вывода для закрытого файла».

12 голосов
/ 09 ноября 2009

ValueError звучит мне подходит:

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

2 голосов
/ 12 февраля 2019

ValueError больше похоже на эквивалент IllegalArgumentException в Java.

RuntimeError звучит как лучше для меня:

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

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

Если вы хотите обрабатывать это иначе, чем другие ошибки, просто извлеките из этого ваше собственное исключение:

class IllegalStateError(RuntimeError):
    pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...