He visto a personas decir que es una mala forma usar catch sin argumentos, especialmente si ese catch no hace nada:
StreamReader reader=new StreamReader("myfile.txt");
try
{
int i = 5 / 0;
}
catch // No args, so it will catch any exception
{}
reader.Close();
Sin embargo, esto se considera buena forma:
StreamReader reader=new StreamReader("myfile.txt");
try
{
int i = 5 / 0;
}
finally // Will execute despite any exception
{
reader.Close();
}
Por lo que puedo decir, la única diferencia entre poner el código de limpieza en un bloque finalmente y poner el código de limpieza después de los bloques try..catch es si tiene declaraciones de retorno en su bloque try (en ese caso, el código de limpieza finalmente será ejecutar, pero el código después del intento ... captura no lo hará).
De lo contrario, ¿qué tiene de especial finalmente?