AFAIK, this is already done (in g++ at least).
It creates exception tables. From the value of program counter
you can understand in which function/scope you're in. For each
scope you already know which destructors have to be called and
using the stack address you delete the apropriate objects.
That's something I already thought of and I had the idea that the
supporting data-structure would make it possible to determine which
exception-specifiers take effect when the exception is thrown so that
ESs could be supported without any peformance penalty ! That wouldn't
be a reason to love the callow ES-concept, but I think that when the
performance-decreasing effect could be eliminated, they clearly would
be an advantage.