O_o
The most important question here is whether or not the program logic holds in the case of a portion of the logic failing.
Soma
Code:
// ...
{
try
{
Go1();
}
catch(...)
{
// ...
}
try
{
// If `Go1' fails, does this make sense?
// How does this make sense?
// Did the `catch' block above realign global state?
// If the global state can be realigned in the case of an exception at local scope,
// was there even an exception?
// Did the `catch' block above simply log an error so that we may continue in any event?
// If the the `catch' block only exists to log an error the failure of the function isn't critical,
// so why don't we just wrap that function to emit a log entry and continue normally without needing
// the logic every time that function is used?
// Did we loop until we succeeded?
// If we must succeed in order to get here, why do we do anything locally with an exception
// when we can't guarantee eventual success? Shouldn't we let higher order logic determine further attempts?
Go2();
}
catch(...)
{
// ...
}
}
// ...