Ответ 1
На 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.