Sono consapevole che fare Controllo del flusso su un programma utilizzando un blocco try-catch
è una cattiva pratica, ma non riesco a vedere come farlo in un altro modo quando l'errore rilevato richiede un reindirizzamento dell'esecuzione del codice.
Ad esempio, supponiamo di avere una schermata in cui l'utente fa clic su un pulsante e sui pulsanti fai clic su Esegui del codice. Dopo che il codice termina l'esecuzione, reindirizzo l'utente a una nuova schermata ....
... Ma l'esecuzione del codice può fallire e, in tal caso, devo informare l'utente dell'errore e reindirizzarlo alla schermata precedente.
Il modo in cui lo farò è:
try
{
ExcuteCode();
NavigateToNextScreen();
}
catch(Exception e)
{
Log.Write(e);
ShowErrorMessage();
GoBack();
}
Anche se lo cambio in:
bool hasError = false;
try
{
ExecuteCode();
}
catch(Exception e)
{
Log.Write(e);
ShowErrorMessage();
hasError = true;
}
if(hasError) { GoBack(); }
else { NavigateToNextScreen();}
Sta ancora facendo Controllo del flusso all'interno del blocco try-catch
.
Quindi, esiste un modo consigliato per gestirlo correttamente ed evitare questa cattiva pratica?