J'ai le code suivant:
public DataTable GetAllActiveUsers()
{
DataTable dataTable = new DataTable();
try
{
connection.Open();
SqlCommand getAllActiveUsersCommand = new SqlCommand(getAllUsers, connection);
SqlDataAdapter dataAdapter = new SqlDataAdapter(getAllActiveUsersCommand);
dataAdapter.Fill(dataTable);
return dataTable;
}
catch(Exception e)
{
Console.WriteLine(e);
return null;
}
finally
{
connection.Close();
}
}
Quels sont les utilisateurs actifs que j'ai sur ma base de données? Mais quelqu'un peut-il m'expliquer si le bloc Finally
sera exécuté s'il exécute correctement le bloc try
et renvoie le DataTable ??
Merci
Oui.
Comme indiqué ici: MSDN
En règle générale, les instructions d'un bloc finalement s'exécutent lorsque le contrôle quitte une instruction try. Le transfert de contrôle peut se produire à la suite de l'exécution normale, de l'exécution d'une instruction break, continue, goto ou return, ou de la propagation d'une exception hors de l'instruction try.
Mais finalement le bloc n'est pas toujours exécuté. Vous pouvez lire l'anecdote d'Alex Papadimoulis ici
Oui.
Le bloc finally sera exécuté s'il y a une instruction return ou une exception levée dans le bloc try {} catch()
.
enfin le bloc est toujours exécuté.
vous devez vous débarrasser du bloc enfin. Car, dispose également ferme la connexion et supprime les ressources mémoire non gérées.
finally
{
connection.Dispose();
}