2012-10-01 9 views
11

¿Hay alguna forma de escribir un código de captura de excepción que sea compatible de python 2.4 a python 3?Cómo escribir un código de captura de excepción que funcione en Python2.4 a Python3

Al igual que este código:

# only works in python 2.4 to 2.7 
try: 
    pass 
except Exception,e: 
    print(e) 

# only works in python 2.6 to 3.3 
try: 
    pass 
except Exception as e: 
    print(e) 
+1

Una gran cantidad de proyectos mantienen su código para Python 2, y utilice [2to3] (http : //docs.python.org/library/2to3.html) para convertirlo automáticamente a python 3 según sea necesario. Por lo general, es más fácil que tratar de escribir un código que sea compatible con ambos (probablemente este no sea el problema más difícil que encuentres). – James

Respuesta

15

Tratando de escribir código que funciona tanto en Python 2 y Python 3 es en última instancia, más bien inútil, debido a la gran cantidad de diferencias entre ellos. De hecho, muchos proyectos ahora se mantienen en versiones separadas de Python 2 y Python 3 como resultado.

Dicho esto, si usted está empeñado en hacer esto de una manera súper portátil ...

import sys 
try: 
    ... 
except Exception: 
    t, e = sys.exc_info()[:2] 
    print(e) 
+2

Aunque esto no será seguro para hilos –

+0

Gracias nneonneo por su respuesta, y gracias @gnibbler por su consejo :-) – yegle

+4

@gnibbler: Creo que es ... "La información devuelta es específica para el hilo actual y al marco de pila actual ". – nneonneo

Cuestiones relacionadas