В сценариях Python во многих случаях прерывание клавиатуры (Ctrl-C) не приводит к завершению процесса из-за голого предложения except
где-то в коде:
try:
foo()
except:
bar()
Стандартное решение в Python 2.5 или выше состоит в том, чтобы поймать Exception
вместо использования простых except
предложений:
try:
foo()
except Exception:
bar()
Это работает, потому что в Python 2.5 KeyboardInterrupt
и SystemExit
наследуются от BaseException
, а не Exception
. Тем не менее, некоторые установки все еще работают на Python 2.4. Как можно решить эту проблему в версиях, предшествующих Python 2.5?
(Я собираюсь ответить на этот вопрос сам, но поставлю его здесь, чтобы люди, ищущие его, могли найти решение.)