python python-2.4

Evitar la captura accidental de KeyboardInterrupt y SystemExit en Python 2.4



python-2.4 (1)

De acuerdo con la documentación de Python , la forma correcta de manejar esto en versiones de Python anteriores a la 2.5 es:

try: foo() except (KeyboardInterrupt, SystemExit): raise except: bar()

Eso es muy prolijo, pero al menos es una solución.

En los scripts de Python, hay muchos casos en los que una interrupción del teclado (Ctrl-C) no puede detener el proceso debido a una cláusula de except en algún lugar del código:

try: foo() except: bar()

La solución estándar en Python 2.5 o superior es detectar Exception lugar de usar cláusulas de except :

try: foo() except Exception: bar()

Esto funciona porque, a partir de Python 2.5, KeyboardInterrupt y SystemExit heredan de BaseException , no Exception . Sin embargo, algunas instalaciones todavía están ejecutando Python 2.4. ¿Cómo puede manejarse este problema en versiones anteriores a Python 2.5?

(Voy a responder esta pregunta por mí mismo, pero ponlo aquí para que las personas que lo encuentren puedan encontrar una solución).