ぁー実際は

while( 1 )
{
 Dispatch();
}
って感じで、状況によって違う関数を常に送出してます。
最初はifで判定して、ループを抜けてたんですが、
try
{
while()...
}
catch( MyException &E )
{
 if( E.code() == USER_EXIT ){ status = SUCCESS; }
 else{ status = ERROR }
}

みたいなコードの方が綺麗かな。と思いまして。
ただ、正常系で例外使うなって話があったんで、だめかなぁと。。。