code: def test_nested_throws(capture):
      """Tests nested (e.g. C++ -> Python -> C++) exception handling"""
  
      def throw_myex():
          raise m.MyException("nested error")
  
      def throw_myex5():
          raise m.MyException5("nested error 5")
  
      # In the comments below, the exception is caught in the first step, thrown in the last step
  
      # C++ -> Python
      with capture:
          m.try_catch(m.MyException5, throw_myex5)
      assert str(capture).startswith("MyException5: nested error 5")
  
      # Python -> C++ -> Python
      with pytest.raises(m.MyException) as excinfo:
          m.try_catch(m.MyException5, throw_myex)
      assert str(excinfo.value) == "nested error"
  
      def pycatch(exctype, f, *args):
          try:
              f(*args)
          except m.MyException as e:
              print(e)
  
      # C++ -> Python -> C++ -> Python
      with capture:
          m.try_catch(
              m.MyException5,
              pycatch,
              m.MyException,
              m.try_catch,
              m.MyException,
              throw_myex5,
          )
      assert str(capture).startswith("MyException5: nested error 5")
  
      # C++ -> Python -> C++
      with capture:
          m.try_catch(m.MyException, pycatch, m.MyException5, m.throws4)
      assert capture == "this error is rethrown"
  
      # Python -> C++ -> Python -> C++
      with pytest.raises(m.MyException5) as excinfo:
          m.try_catch(m.MyException, pycatch, m.MyException, m.throws5)
      assert (
          str(excinfo.value)
          == "this is a helper-defined translated exception"
      )
  
imports: import sys
  import pytest
  import env
  import pybind11_cross_module_tests
  import pybind11_tests
  from pybind11_tests import exceptions
label_desc: Use image node_id 12 for calling a global function with example usage: test_nested_throws(capture) without return types