Как увидеть ошибку и сохранить программу в оболочке Python? - PullRequest
1 голос
/ 16 октября 2010

Я знаю, что try / кроме может обрабатывать ошибки в моей программе.Но есть ли способ заставить отображать ошибку при выполнении программы, игнорировать ее и продолжать выполнение?

Ответы [ 2 ]

3 голосов
/ 16 октября 2010

В VBScript и других производных от VB языках вы можете получить такое поведение с помощью "ON ERROR GOTO NEXT".

Нет такого поведения в Python. Даже если вы закроете каждое утверждение верхнего уровня как:

try:
  do_something()
except Exception as e:
  print e

try:
  do_something_else()
except Exception as e:
  print e

у вас все равно будет результат, что операторы внутри do_something будут пропущены в тот момент, когда выдается исключение.

Хотя, возможно, если вы имеете в виду конкретный вариант использования, могут быть и другие приемлемые ответы. Например, в цикле верхнего уровня:

while True:
  cmd = get_command()
  if cmd == 'quit': break
  try:
    run_command(cmd)
  except Exception as e:
    print "Error running " + cmd + ":"
    print e
2 голосов
/ 16 октября 2010
import traceback

try:
    # do whatever you want
except Exception:
    traceback.print_exc()

Конечно, вы должны быть более конкретны в реальном сценарии, т.е. вы не должны ловить и игнорировать все Exception экземпляры, только те, которые вас интересуют, и вы знаете, что их безопасно игнорировать.

Также обратите внимание, что если исключение происходит где-то внутри блока try..except, выполнение будет продолжено после блока try..except, а не в следующем операторе.Это, вероятно, самое близкое к тому, чего вы хотите достичь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...