#python #error-handling #nested-exceptions
#python #обработка ошибок #вложенные исключения
Вопрос:
Я хочу напечатать все операторы исключения из внутренней попытки до улова внешней попытки. Есть ли какой-либо способ сделать это без изменения внутреннего блока try-catch
def test_nested_exceptions():
try:
try:
raise AssertionError('inner error ')
except AssertionError as ae:
raise AssertionError("error in except")
finally:
raise AssertionError("error in finally")
except AssertionError as e:
print(e)
Ответ №1:
Вы не можете получить доступ к объекту ошибки в finally
блоке, но вы можете получить некоторые подробности, используя sys
модуль, как показано ниже.
import sys
def test_nested_exceptions():
try:
try:
raise AssertionError('inner error ')
except AssertionError as ae:
print(ae)
raise AssertionError("error in except")
finally:
print(sys.exc_info())
raise AssertionError("error in finally")
except AssertionError as e:
print(e)
test_nested_exceptions()