SystemExit
Исключение, поднимаемое sys.exit(), для остановки работы интерпретатора.
Исключение поднимается функцией
Если исключение не обрабатывается, приложение останавливается, при этом трассировка стека не выводится.
Инициализатор принимает те же аргументы, что и
если передано целое, то оно считается статусом выхода (передаётся в функцию Си
если
в ином случае (например, при передаче строки), это значение будет отправлено на вывод, а кодом статуса будет
Начиная с +py2.5 наследуется от BaseException, чтобы избежать отлова кодом, обрабатывающего Exception, что может мешать остановке интерпретатора.
sys.exit()
. Это делается для того, чтобы подчищающие обработчики, располагающиеся в блоках finally
инструкций try
имели возможность выполниться, а отладчики могли запускать скрипты без риска потерять управление над ними. Если исключение не обрабатывается, приложение останавливается, при этом трассировка стека не выводится.
from sys import exit
try:
exit(33)
except SystemExit as e:
print('Exit code: %s' % e.code) # Exit code: 33
raise # SystemExit: 33
Инициализатор принимает те же аргументы, что и
sys.exit()
, то есть в него можно передать код выхода, который позже будет доступен в атрибуте code:если передано целое, то оно считается статусом выхода (передаётся в функцию Си
exit()
); если
None
, статус выхода считается равным 0
; в ином случае (например, при передаче строки), это значение будет отправлено на вывод, а кодом статуса будет
1
.Начиная с +py2.5 наследуется от BaseException, чтобы избежать отлова кодом, обрабатывающего Exception, что может мешать остановке интерпретатора.
На заметку
Если безоговорочно требуется выйти немедленно (например, в дочернем процессе после вызова
os.fork()
), можно использовать os._exit()
.
Синонимы поиска: SystemExit, выход
В этом разделе:
SystemExit.code
В разделе «BaseException»:
BaseException.args
BaseException.with_traceback
Exception
KeyboardInterrupt
StandardError
На заметку
Зарегистрированные пользователи могут получать еженедельный дайджест обновлений на сайте.