2012-10-01 5 views
11

Esiste comunque un codice di cattura delle eccezioni compatibile da Python 2.4 a python 3?Come scrivere un codice di cattura delle eccezioni funziona in Python2.4 in Python3

piace questo codice:

# 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

Un sacco di progetti mantengono il loro codice per Python 2, e usare [2to3] (http : //docs.python.org/library/2to3.html) per convertirlo automaticamente in python 3, se necessario. Di solito è più facile che provare a scrivere codice compatibile con entrambi (questo probabilmente non sarà il problema più difficile da affrontare). – James

risposta

15

Cercando di scrivere codice che funziona sia Python 2 e Python 3 è in definitiva piuttosto inutile, a causa del gran numero di differenze. In effetti, molti progetti sono ora mantenuti in versioni separate di Python 2 e Python 3 come risultato.

Detto questo, se si è decisa a fare questo in un modo super-portatile ...

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

Sebbene questo non sia infallibile –

+0

Grazie nneonneo per la risposta, e grazie @gnibbler per il tuo suggerimento :-) – yegle

+4

@gnibbler: Credo che sia ... "Le informazioni restituite sono specifiche sia per il thread corrente e al frame dello stack corrente. " – nneonneo

Problemi correlati