Почему код выхода не соблюдается? - PullRequest
0 голосов
/ 11 мая 2018

Предположим, мы пишем следующее внутри test_script.py:

sys.exit(-992340374290374)

Мы получаем следующее сообщение об ошибке:

"[drive_letter]:\[path to python.exe]" [drive_letter]:/[path to script]

Process finished with exit code -1

-1 не -992340374290374. Что случилось?

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Это связано с тем, как ваша операционная система обрабатывает выход.В документации для sys.exit говорится:

Большинство систем требуют, чтобы он находился в диапазоне 0–127, и в противном случае дают неопределенные результаты.

0 голосов
/ 11 мая 2018

Из sys.exit документов (выделено мной):

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

Необязательный аргумент arg может быть целым числом, указывающим статус выхода (по умолчанию ноль) или другой тип объекта. Если это целое число, ноль считается «успешным завершением», а любое ненулевое значение рассматривается как «ненормальное завершение» снарядами и тому подобным. Большинство систем требует, чтобы он находился в диапазоне 0–127, и дает неопределенные результаты в противном случае. Некоторые системы имеют соглашение о назначении конкретных значения для конкретных кодов выхода, но это, как правило, недоразвиты; Программы Unix обычно используют 2 для синтаксиса командной строки ошибки и 1 для всех других видов ошибок. Если другой тип объекта пропущен, None эквивалентен прохождению нуля, а любой другой объект выводится в stderr и приводит к коду выхода 1. В частности, sys.exit («некоторое сообщение об ошибке») - это быстрый способ выйти из программы, когда происходит ошибка.

...