aşağıdaki asgari örneği düşünün: Python 2 ile bu kod çalıştırmaKapsam ve 3
try:
raise Exception('foo')
except Exception:
try:
raise Exception('bar')
except Exception:
pass
raise
Python 3 ile çalışan, istisna çıtayı yükseltiyor istisna foo yükseltir . Yine de, Python 2 ve Python 3 belgelerinin hiçbir ifade içermeyen raise
"geçerli kapsamda etkin olan son istisnayı" yükselteceğini belirtir. Python 2 ve 3'te neden farklıdır? Fark herhangi bir yerde belgelenmiş mi?
https://docs.python.org/3.0/whatsnew/3.0.html#changes-to-exceptions – jonrsharpe
'daki istisnalar için 2.x vs. 3.x değişikliklerini görebilirsiniz. Görünüşe göre bu, PEP 3110 https://www.python.org/dev/peps/pep-3110/ tarafından konulan ve 2 ile 3 arası bir değişiklikle belgelere konulan blokların istisna isimlerinin gizli olarak temizlenmesiyle ilgilidir: https : //docs.python.org/2/reference/compound_stmts.html#try https://docs.python.org/3/reference/compound_stmts.html#try. Ancak bu en iyi ihtimalle eksiktir, çünkü bunun yalnızca "hedef olarak" kullanılarak atanan istisnalar için geçerli olduğunu iddia eder. – a3nm
Davranış farkı 2.7.9 ve 3.4.3rc1'de doğrulandı. İzleyicide (bugs.python.org) bir sorun çıkarabilir misiniz? (Henüz değilse.) –