C'è un modo migliore per scrivere questo codice senza utilizzare goto
? Sembra imbarazzante, ma non riesco a pensare a un modo migliore. Devo essere in grado di eseguire un tentativo, ma non voglio duplicare alcun codice.Un modo migliore per scrivere la logica riprova senza goto
public void Write(string body)
{
bool retry = false;
RetryPoint:
try
{
m_Outputfile.Write(body);
m_Outputfile.Flush();
}
catch (Exception)
{
if(retry)
throw;
// try to re-open the file...
m_Outputfile = new StreamWriter(m_Filepath, true);
retry = true;
goto RetryPoint;
}
}
dispiace, non può resistere! http://xkcd.com/292/ – Joe
C'è SEMPRE un modo migliore per scrivere la logica senza un goto. –
@ McWafflestix: non sono d'accordo. Ci sono alcuni * casi molto rari * in cui l'utilizzo di goto' produce in effetti un codice più pulito: l'interruzione di cicli annidati è un esempio comunemente citato (poiché C# non ha interruzioni etichettate come Java). Vedi http://stackoverflow.com/questions/2542289/is-there-ever-a-reason-to-use-goto-in-modern-net-code per ulteriori informazioni. – Heinzi