вы можете сделать следующее:
try:
do_stuff()
except (SyntaxError, <any other exception>):
raise # simply raises the catched exception
except Exception:
print "yes, it's catching EVERYTHING"
Кроме того, если только это не действительно то, что нужно, except
никогда не следует использовать без спецификации исключения, так как он также поймает KeyboardInterrupt
и GeneratorExit
.Exception
должно быть указано как минимум;см. встроенную иерархию исключений .
Обратите внимание, что, как указано в комментарии ниже @tobias_k, SyntaxError
обнаруживается до фактического запуска сценария, поэтому его не следуетнужно было поймать его.
Для испытания я искал способ действительно поймать SyntaxError
, и единственный случай, который я обнаружил, - это следующее (но есть и другие случаи, см. комментарий @ brunodesthuilliers):
try:
eval(input('please enter some Python code: '))
except SyntaxError:
print('oh yeah!')
$ python syntax_error.py
please enter some Python code: /
oh yeah!
Мой вывод таков: если вам нужно поймать SyntaxError
, это означает, что ваша кодовая база делает некоторые вещи даже хуже, чем вы показали нам ... Я желаю вам много мужества;)