Подтвердить что ты не робот

Как выйти из программы в 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 - это просто манекен.

4b9b3361

Ответ 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.