A volte devi solo sapere se un'operazione è riuscita o meno.
L'esempio più diretto che posso pensare è la metrica TryParse in .NET Framework. TryParse esiste per una serie di motivi:
- Puoi controllare la durata della variabile in cui stai inserendo il risultato dell'analisi,
- Le eccezioni sono troppo costose per essere lanciate se ti trovi nel bel mezzo di un ciclo lungo e
- Un flag di successo consente di sostituire un valore appropriato per un analisi fallita (come zero, forse).
TryParse si presenta così:
bool result SomeNumericType.TryParse(string text, out SomeNumericType value)
Diciamo che stai cercando di analizzare alcune colonne numeriche in un grande file di testo il più rapidamente possibile, ma una delle colonne contiene un carattere di testo. Se utilizzi un metodo Parse che genera eccezioni, hai appena azzoppato il parser.
D'altra parte, se fai qualcosa di simile:
public double ParseColumn(string text)
{
double number= 0;
if (double.TryParse(text), out number)
return number;
else
{
// optionally analyze text for the reasons why, log the problem, or whatever
return 0;
}
}
Quindi hai evitato di dover intercettare l'eccezione temuta, un'operazione che è in genere di tre ordini di grandezza più lenta di restituire un codice di errore o un risultato positivo, e hai abbassato il sovraccarico per quanto umanamente possibile per il caso generale (un'operazione di analisi riuscita).