Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Finally [ Archives / Divers ] (cyrare)

mardi 2 mai 2006 à 19:29:45 | Finally

cyrare

Membre Club
Bonjour,

Question absolument pas urgente, je cherche à comprendre la subtilité qu'il y a entre :

try
{
     [Instructions A]
}
catch
{
     [Instructions B]
}
finally
{
     [Instructions C]
}


et

try
{
     [Instructions A]
}
catch
{
     [Instructions B]
}
[Instructions C]


J'ai l'impression que les 2 codes sont identiques, mais j'imagine qu'il y a forcément une différence, sinon, finally n'existerait pas... J'ai cherché sur le net, mais rien de très clair à ce sujet.

Merci pour vos lumières. :)

mardi 2 mai 2006 à 20:57:03 | Re : Finally

MorpionMx

Membre Club Administrateur CodeS-SourceS
Salut,

Petit test simple :



publicclassForm1 : Form
{
   public Form1()
   {
      try
      {
         Test();
      }
      
catch (Exception e)
      {
         MessageBox.Show("Dans catch constructeur");
      }
   }
   publicvoid Test()
   {
      try
      {
         MessageBox.Show("Dans try test");
         thrownewException();
      }
      catch (Exception)
      {
         MessageBox.Show("Dans catch test");
         throw;   
      }
      finally
      {
         MessageBox.Show("Dans finally");
      }
      MessageBox.Show("Apres finally");
}



L'instruction apres le finally n'est pas appelée, pourtant, celle dans le finally l'est.
Le finally est la pour t'assurer que le bloc d'instruction qu'il contient est toujours appelé.

Mx
MVP C#
 


mardi 2 mai 2006 à 21:07:50 | Re : Finally

MorpionMx

Membre Club Administrateur CodeS-SourceS
Autre exemple : si tu met un return dans ton try ou ton catch, ou si une exception n'est pas gérée dans ta méthode (enleve le catch de la méthode test de mon exemple), le finally est quand meme appelé, et pas le code suivant.

Donc pour etre plus explicite, le finally est appelé quoiqu'il arrive, ce qui est un comportement crucial pour fermer un fichier ouvert, clore une connexion a une base de données, liberer et nettoyer les ressources, ...



Mx
MVP C#
 




Cette discussion est classé dans : catch, finally, instructions


Répondre à ce message

Sujets en rapport avec ce message

Gestion d'erreur du Framework [ par bucherb ] Hello!!Est-ce quelqu'un saurait comment arrêter l'interception automatique des erreurs du framework?J'ai une exception qui est lancée à un moment donn un try catch généraliste [ par Fildomen ] salutje suis entrain de developper un serveur, le projet ou faut pas que le prog plante, mais je suis sur qu'il va planter qlq part :-) , alors , je v Continuer une methode après une catch() [ par moihenry ] Bj,Voila je voudrais que dans une fonction de un programme si jamais il y a une erreur le programme continue a fonctionner normalement !!Par ex :une m Comment obliger le catch d'une exception? [ par tominfo ] Salut, Je cherche à savoir comment on indique à une méthode qu'elle est suscpetible de jetter une exception et que l'objet qui l'appelle soit obligé probleme base de donnée fermée [ par ultima_93 ] Bonjour,Je dois faire la maintenance d'un service windows en C# qui démarre tous les jours à 8h du matin, ce service accède à une base de données orac instructions codées par la voix???? [ par othland ] slt tlm,existe il, en C#, la notion d'instructions codées par la voie????ou bien j'invente avec ma....tête!!??!! Insert et Access [ par hoodlum ] Bonjour a tous je suis débutant dans le traitement de base de données avec C# je fais une requete insert qui ne marche pas le dernier catch me dit q Redéfinition de mon exception [ par BackPack ] Bonjour à tous,J'ai une petite question. Je sais pas si c'est parce que j'ai pasles yeux en face des trous aujourd'hui mais je n'arrive pas àfaire un Désactiver Try - Catch [ par Julien237 ] Bonjour,Je suis en train de debugger un projet relativement gros. Mon problème est que la gestion d'erreur du projet me gènent dans mon travail. Pour Try, Catch et Application.Exit [ par clubberzZ ] Bonjour à tous,Quand j'éxécute le code ci-dessous il fonctionne mais l'application ne se quitte pas, la ligne "Application.Exit();" n'est pas prise en


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,172 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.