You have non-looped, sequenced code, like below:
bool bFailed = true;
if(condition1_fails)
goto Exit;
...
if(condition2_fails)
goto Exit;
...
...
if(conditionN_fails)
goto Exit;
bFailed=false;
PerformActionOnAllSuccess();
Exit:
if(bFailed)
DoFailedCleanup();
else
DoNormalCleanup()
Here is the
goto
-less goto, that you can use:
bool bFailed=true;
do
{
if(condition1_fails)
break;
...
if(condition2_fails)
break;
...
...
if(conditionN_fails)
break;
bFailed = false;
PerformActionOnAllSuccess();
} while(false);
if(bFailed)
DoFailedCleanup();
else
DoNormalCleanup();
It runs a
do-while
loop, which would run only once. As soon as some failed-condition encounters, it exits (break) from loop.