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!

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top