making pitone 2.6 eccezione compatibile
-
21-09-2019 - |
Domanda
Ho il seguente codice Python:
try:
pr.update()
except ConfigurationException as e:
returnString=e.line+' '+e.errormsg
Questo funziona in Python 2.6, ma la sintassi "come e" non con le versioni precedenti. Come posso risolvere questo? O in altre parole, come faccio a rilevare le eccezioni definite dall'utente (e usare le loro variabili di istanza) in Python 2.6. Grazie!
Soluzione
Questa è compatibile a ritroso:
try:
pr.update()
except ConfigurationException, e:
returnString=e.line+' '+e.errormsg
Altri suggerimenti
Questo è sia in avanti e indietro compatibile:
import sys
try:
pr.update()
except (ConfigurationException,):
e = sys.exc_info()[1]
returnString = "%s %s" % (e.line, e.errormsg)
Questo elimina il problema dell'ambiguità in Python 2.5 e versioni precedenti, pur senza perdere nessuno dei vantaggi del pitone 2.6 / 3 variazione vale a dire senza ambiguità può ancora prendere molteplici tipi di eccezione per esempio except (ConfigurationException, AnotherExceptionType):
e, se è necessario un trattamento per-tipo, possono ancora verificare exc_info()[0]==AnotherExceptionType
.
Leggere questo: http://docs.python.org/reference /compound_stmts.html#the-try-statement
e questo: http: //docs.python .org / whatsnew / 2.6.html # pep-3110-di gestione delle eccezioni-modifiche
Non utilizzare as
, utilizzare un ,
.
La sintassi as
è espressamente NON compatibile perché la sintassi ,
è ambiguo e deve andare via in Python 3.
try:
pr.update()
except ConfigurationException, e:
returnString = e.line + " " + e.errormsg