В сценариях 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?
(Я сам отвечу на этот вопрос, но поставлю его здесь, чтобы люди, которые его искали, могли найти решение.)