Что произойдет с моим первым исключением (A), когда второй (B) поднят в следующем коде?
class A(Exception): pass
class B(Exception): pass
try:
try:
raise A('first')
finally:
raise B('second')
except X as c:
print(c)
Если вы используете X = A, я получаю:
Traceback (most recent call last):
File "raising_more_exceptions.py", line 6, in
raise A('first')
__main__.A: first
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "raising_more_exceptions.py", line 8, in
raise B('second')
__main__.B: second
Но если X = B, я получаю:
second
Вопросы
- Где мое первое исключение отправилось?
- Почему только внешнее исключение доступно?
- Как отключить внешнее исключение и сделать ререйз более ранними исключениями?
Update0
В этом вопросе конкретно рассматривается Python 3, поскольку его обработка исключений сильно отличается от Python 2.