Как печатать исключения вложенного цикла?

#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()