例外に関して、よく「巻き戻す」という表現をすることがあるようですが
巻き戻してもう一度tryブロックの最初からやり直すようなことはできないのでしょうか?

HANDLE h = NULL;
try
{
function(h);
}
catch(null_exception& e)
{
write_log();
h = valid_value;
}

こんな感じになる処理できるかと思ったのですが・・・