piton dil referans durumları: Bir ifade ile except bir İçinNeden nesne Python'daki her şeyi yakalamaz? <a href="https://docs.python.org/2.7/reference/compound_stmts.html#the-try-statement" rel="nofollow">section 7.4</a> yılında
, bu ifade değerlendirilir ve ortaya çıkan nesne haricinde “uyumlu” ise hüküm istisna eşleşir. Bir nesne, istisna nesnesinin sınıfı veya temel sınıfı veya istisna ile uyumlu bir öğe içeren bir tuple ise bir istisna ile uyumludur.
Neden except object:
her şeyi yakalamıyor? object
, tüm özel durum sınıflarının temel sınıfıdır, bu nedenle except object:
her özel durumu yakalayabilmelidir.
Örneğin, bu AssertionError
print isinstance(AssertionError(), object) # prints True
try:
raise AssertionError()
except object:
# This block should execute but it never does.
print 'Caught exception'
ve 'Nesnesi' bir istisna türü değil. Yine de bunun neden bir 'TypeError' tetiklemediğinden emin değilim. – user2357112
Bu, yalnızca 2.x'te çalışır. 3.x'te bir TypeError atar. Benim varsayım, bazı eksik sihirli yöntem nedeniyle başarısız olur, ama ben hangisi (ler) söyleyemedim. AssertionError, 'object'' {'__setstate__', 'args', '__context__', '__suppress_context__', '__dict__', '__cause__', 'with_traceback', '__traceback __'} 'karakterine sahip olmayan aşağıdaki özniteliğe sahiptir. , bu yüzden onlardan biri olduğunu farz ediyorum. –
2.x özel durum işleminde bir hataya benziyor. Python 3 istisnasız türleri yakalamak için doğru kontrollere sahiptir. Python 2 sadece sessizce yanlış şeyi yapar. – user2357112