Sono nuovo su Python e sono bloccato a questo problema. Sto cercando di confrontare due "oggetti di eccezione", ad esempio:Confronto di oggetti di eccezione in Python
try:
0/0
except Exception as e:
print e
>> integer division or modulo by zero
try:
0/0
except Exception as e2:
print e2
>> integer division or modulo by zero
e == e2
>> False
e is e2
>> False
Come devo eseguire questo confronto per ottenere un "vero"?
Quello che sto cercando di fare:
class foo():
def bar(self, oldError = None):
try:
return urllib2.urlopen(someString).read()
except urllib2.HTTPError as e:
if e.code == 400:
if e != oldError: print 'Error one'
else:
if e != oldError: print "Error two"
raise
except urllib2.URLError as e:
if e != oldError: print 'Error three'
raise
class someclass():
# at some point this is called as a thread
def ThreadLoop(self, stopThreadEvent):
oldError = None
while not stopThreadEvent.isSet():
try:
a = foo().bar(oldError = oldError)
except Exception as e:
oldError = e
stopThreadEvent.wait(3.0)
(probabilmente qualche errore di sintassi)
perché sto facendo questo? Perché io non voglio stampare lo stesso errore due volte
Cosa stai cercando di fare qui? Ho dato una risposta, ma immagino ci sia un modo migliore per farlo. –
Ho aggiornato la domanda, la tua risposta era perfetta per la mia domanda (generica) originale, ma sfortunatamente non funzionerà sul mio problema (se ho due eccezioni dello stesso tipo, ma attributi diversi, ho bisogno di un "vero" per l'uguaglianza confronto) – Pedro
La tua descrizione è come funziona la mia. –