私はPythonで新しく、この問題に悩まされています。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
"True"を取得するにはどうすればよいですか?
私が行うには何をしようとしています:
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)
(おそらくいくつかの構文エラー)
なぜ私はそれをやっていますか? 私は二回
ここで実際に何をしようとしていますか?私は答えを出しましたが、これについてもっと良い方法があると思います。 –
あなたの答えは私の(一般的な)オリジナルの質問には完璧でしたが、残念なことにそれは私の問題では機能しません(同じ型の2つの例外はありますが属性が異なる場合、比較) – Pedro
あなたの説明はどのように私の作品です。 –