I have some "nested" try catch blocks, split across functions, but essentially it boils down, for classes Foo and Bar, to this:
try { for (;;){ try { Foo foo; try { Bar bar; if (something){ continue; } } catch (...){ std::cout << "inner"; } } catch (...){ std::cout << "middle"; } } } catch (...){ std::cout << "outer"; } Both classes can throw exceptions in their destructors.
If continue is reached then as the stack unwinds, and during the destruction of foo and bar, an exception is thrown, then I'm expecting to print "outer", but it doesn't do that. What is going on?