Сообщить об ошибке.

Исключения, наследуемые от BaseException в Python

Следующие исключения наследуются от базового класса исключений BaseException.

Exception:

Все встроенные исключения, не связанные с выходом из системы, являются производными от этого класса. Все определяемые пользователем исключения также должны быть производными от этого класса.

SystemExit:

Исключение SystemExit вызывается методом sys.exit() системного модуля sys. Он наследуется от базового класса BaseException вместо Exception, чтобы его случайно не перехватил код, который ловит исключение. Это позволяет исключению правильно распространяться вверх и вызывать выход из интерпретатора. Когда он не обрабатывается, интерпретатор Python завершает работу. Обратная трассировка стека не печатается. Конструктор принимает тот же необязательный аргумент, переданный в sys.exit().

  • если значение является целым числом, то оно указывает состояние выхода системы,
  • если нет, то состояние выхода равно нулю,
  • если он имеет другой тип, например строка, то выводится значение объекта и состояние выхода равно единице.

Вызов sys.exit() преобразуется в исключение, так что обработчик очистки finally конструкции оператора try, могут быть выполнены так, что отладчик может выполнить сценарий, не рискуя потерять контроль. ОС. Функцию os._exit() можно использовать, если она абсолютно положительно необходима для немедленного выхода, например в дочернем процессе после вызова os.fork().

  • атрибут code:
    Состояние выхода или сообщение об ошибке, которое передается конструктору. Значение по умолчанию None.

KeyboardInterrupt:

Исключение KeyboardInterrupt поднимается, когда пользователь нажимает клавишу прерывания, обычно Ctrl+C или Delete. Во время выполнения регулярно производится проверка прерываний. Исключение наследуется от BaseException, чтобы не быть случайно перехваченным кодом, который ловит исключение и таким образом предотвращает выход из интерпретатора.

GeneratorExit:

Исключение GeneratorExit поднимается, когда генератор или сопрограмма закрыты. Он непосредственно наследуется от BaseException вместо Exception, так как технически это не ошибка.