#include <iostream>
#include <stdexcept>

struct A
{
  A() { std::cout << "A()\n"; }
  ~A() { std::cout << "~A()\n"; }
};

struct B
{
  A a1;
  B()
  {
    A a2;
    throw std::runtime_error("noooo");
  }
};

int main()
{
  try {
    B b;
  } catch (std::runtime_error& e) {
    std::cout << e.what() << '\n';
  }
}