Мне нужно остановить мою программу, когда в Python возникает исключение. Как мне это реализовать?
Как остановить программу, когда в Python возникает исключение?
Ответы (6)
Вы можете перестать перехватывать исключение или, если вам нужно его перехватить (чтобы выполнить какую-то пользовательскую обработку), вы можете повторно вызвать:
try:
doSomeEvilThing()
except Exception, e:
handleException(e)
raise
Обратите внимание, что ввод raise без передачи объекта исключения приводит к сохранению исходной трассировки. Обычно это намного лучше, чем raise e.
Конечно, вы также можете явно вызвать
import sys
sys.exit(exitCodeYouFindAppropriate)
Это вызывает исключение SystemExit и (если вы его где-то не поймаете) завершает ваше приложение с указанным кодом выхода.
sys.exc_info() для получения достаточной информации для сохраненного re-raise, если требуется некоторая обработка
- person Tobias Kienzler; 12.11.2014
Если вы не обработаете исключение, оно распространит стек вызовов до интерпретатора, который затем отобразит трассировку и завершит работу. IOW : вам не нужно ничего делать, чтобы ваш скрипт завершил работу при возникновении исключения.
import sys
try:
import feedparser
except:
print "Error: Cannot import feedparser.\n"
sys.exit(1)
Здесь мы выходим с кодом состояния 1. Обычно также полезно вывести сообщение об ошибке, записать в журнал и очистить.
logging.exception, чтобы записать трассировку в журнал, представить пользователю значимую обратную связь, а затем выйти из игры без повторного возбуждения исключения.
- person cowbert; 29.06.2019
Насколько я знаю, если исключение не поймано вашим скриптом, оно будет прервано.
sys.exit(1) больше подходит ..?
- person kramer65; 11.07.2014
0 означает завершение без ошибок. Поскольку вызов sys.exit, по-видимому, вызван ошибкой, он должен дать код выхода программы, отличный от 0. 1 это просто предложение.
- person Deestan; 11.08.2014