細かい話なのでいちいち書きませんでしたが、
デストラクタ呼び出しが必要な全ての箇所をtry{}finally{}で仮想的に
囲み、デストラクタ呼び出しコードをfinally{}ブロックに埋め込めば
実現可能と考えます(C++にfinallyはありませんが、通じると思います)

さらに自明と思って書きませんでしたが、例外をハンドルしない場合の
リレーは、次のトップにlongjmpするだけです

素人考えなので素朴極まりないのですが、可能不可能で言えば
実現は十分可能に見えます