E 'possibile modificare questo codice, con un valore di ritorno e un'eccezione:Quanto più costosa è un'eccezione che un valore di ritorno?
public Foo Bar(Bar b)
{
if(b.Success)
{
return b;
}
else
{
throw n.Exception;
}
}
a questo, che genera eccezioni separate per il successo e il fallimento
public Foo Bar(Bar b)
{
throw b.Success ? new BarException(b) : new FooException();
}
try
{
Bar(b)
}
catch(BarException bex)
{
return ex.Bar;
}
catch(FooException fex)
{
Console.WriteLine(fex.Message);
}
Questo sembra essere un duplicato funzionale di http://stackoverflow.com/questions/99683/which-and-why-do-you-prefer- codici di eccezione o di ritorno – dmckee
Indipendentemente dalla risposta, è importante ricordare che il costo è relativo all'intero programma. Potresti scoprire che una porzione di codice di 3 righe è più costosa di 1000 volte quando lanci un'eccezione il 100% delle volte. Ma la realtà è che l'eccezione può essere lanciata solo l'1% del tempo in una soluzione che fa cose come chiamate di database o file di lettura. –