на python2.6
Полагаю, вы ожидаете, что блок finally будет связан с блоком "try", где вы вызываете исключение "B". Блок finally присоединяется к первому блоку try.
Если вы добавили блок исключений во внутренний блок try, то блок finally вызовет исключение B.
try:
raise Exception("a")
except:
try:
raise Exception("b")
except:
pass
finally:
raise
Выход:
Traceback (most recent call last):
File "test.py", line 5, in <module>
raise Exception("b")
Exception: b
Еще один вариант, объясняющий, что здесь происходит
try:
raise Exception("a")
except:
try:
raise Exception("b")
except:
raise
Выход:
Traceback (most recent call last):
File "test.py", line 7, in <module>
raise Exception("b")
Exception: b
Если вы видите здесь, замена блока finally с исключением вызывает исключение B.