¿Existe alguna forma mejor de escribir este código sin usar goto
? Parece incómodo, pero no puedo pensar en una mejor manera. Necesito poder realizar un intento de reintento, pero no quiero duplicar ningún código.Mejor manera de escribir la lógica de reintento sin ir a
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;
}
}
lo siento, no puede resistir! http://xkcd.com/292/ – Joe
SIEMPRE hay una mejor manera de escribir la lógica sin un goto. –
@McWafflestix: No estoy de acuerdo. Hay algunos * casos muy raros * en los que el uso de 'goto' de hecho produce un código más limpio: la ruptura de los bucles anidados es un ejemplo comúnmente citado (ya que C# no tiene roturas etiquetadas como Java). Consulte http://stackoverflow.com/questions/2542289/is-there-ever-a-reason-to-use-goto-in-modern-net-code para obtener más información. – Heinzi