2013-09-27 3 views
4

Есть ли разница между exit() и raise ValueError("example"), за исключением того факта, что у меня будет ошибка печати на моем выходе при использовании raise ValueError("example")?Python 2.7: разница между exit() и повышением ValueError ("example")

+0

'exit' выходит, а' raise' вызывает ошибку, что указывает на наличие ошибки и может быть пойман – njzk2

+2

'sys.exit()' вызывает 'SystemExit', что завершает интерпретатор без следа, но принцип тот же, да. –

ответ

6

Существует огромная разница.

sys.exit() вызывает исключение SystemExit, которое Python всегда ловит и превращается в код выхода программы.

Raising ValueError, если неотображается, запускает обработчик sys.excepthook(), после которого выходит Python. По умолчанию, кроме крюка печатает отслеживающее от исключения stderr, после чего Python выходит с кодом выхода 1.

sys.excepthook() функция никогда не вызывается для SystemExit, так что вы не можете настроить обработку этого исключения, но вам может обрабатывать обработку ValueError и другие исключения.

Смежные вопросы