Как выйти из программы в try/except?
У меня есть этот try/except code:
document = raw_input ('Your document name is ')
try:
with open(document, 'r') as a:
for element in a:
print element
except:
print document, 'does not exist'
Как выйти из программы после печати "[filename] не существует"? break
и pass
, очевидно, не работают, и я не хочу, чтобы возникали ошибки, поэтому sys.exit
не является опцией.
Пожалуйста, проигнорируйте часть try
- это просто манекен.
Ответы
Ответ 1
Используйте sys.exit:
import sys
try:
# do something
except Exception, e:
print >> sys.stderr, "does not exist"
print >> sys.stderr, "Exception: %s" % str(e)
sys.exit(1)
Хорошая практика заключается в том, чтобы напечатать Исключение, которое произошло, чтобы впоследствии вы могли отлаживать.
Вы также можете распечатать stacktrace с помощью модуля traceback
.
Обратите внимание, что int, возвращаемый в sys.exit, будет кодом возврата вашей программы. Чтобы узнать, какой код выхода будет возвращен вашей программе (что даст вам информацию о том, что происходит и может быть автоматизировано), вы можете сделать:
echo $?
Ответ 2
Вы также можете поместить свой код в функцию и выдать ответ. Вы можете назвать его основным, который вы можете вызвать из своего script.
def main():
document = raw_input ('Your document name is ')
try:
with open(document, 'r') as a:
for element in a:
print element
except:
print document, 'does not exist'
return
if __name__ == "__main__":
main()
Ответ 3
Использование
sys.exit(1)
не является ошибкой сбоя, это совершенно нормальный способ выхода из программы. Код выхода из 1 - это соглашение, которое означает, что что-то пошло не так (вы вернете 0 в случае успешного запуска).
Ответ 4
Просто поднимите его. Это более дружественно для разработчиков
document = raw_input ('Your document name is ')
try:
with open(document, 'r') as a:
for element in a:
print element
except:
print document, 'does not exist'
raise
Отметьте документ python в разделе Raising Exceptions о re-raise ошибке в except
.