Lo sé ... Lo sé ... El rendimiento no es la principal preocupación aquí, pero solo por curiosidad, ¿qué es mejor?Lo que es mejor: int.TryParse o try {int.Parse()} catch
bool parsed = int.TryParse(string, out num);
if (parsed)
...
O
try {
int.Parse(string);
}
catch() {
do something...
}
Aunque estoy de acuerdo con el impulso general de que el contexto es el rey, diría que TryParse es * casi siempre * mejor, es un poco más que una preferencia personal muy subjetiva. Su contraejemplo (que distingue las diferentes excepciones que se pueden arrojar) es bastante inusual, y probablemente estaría mejor codificado con un bloque catch para cada tipo de excepción en lugar de catch all. – Joe
@Joe: sí, si desea distinguir entre los diferentes tipos de excepción, cualquier cosa que no sean bloques de captura específicos parecerá muy extraño. Mi respuesta apuntaba a discutir 'Parse' vs' TryParse' en lugar de las muestras de código específico en la pregunta. Como mencioné en otros comentarios, estoy de acuerdo en que 'TryParse' es * casi siempre * la mejor manera de hacerlo, pero la palabra clave es" casi ", no" siempre ". –
@Joe: Ya hice esa discusión. Ver el intercambio de comentarios a la pregunta original. Fredrik tiene razón sobre declaraciones absolutas que nunca son ciertas. (OMG una paradoja!) –