Probleme try catch pour ouvrir un fichier

mickbristol78 - 9 mai 2013 à 20:29
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 - 13 mai 2013 à 11:18
Bonjour, j'ai la methode suivante
        private void loadSettingsFile()
        {
            try
            {
                xSettingsDoc.Load(PathSettingsfile);
                listBoxMessages.Items.Add("(" + DateTime.Now + ") " + "Settings.xml loaded properly");
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("Error: "Settings.xml" can not be found!\r\nYou must copy a valid Settings.xml file in the executable folder.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Application.Exit();
            }
        }


mon probleme est;
1_ si le fichier existe, mon programme va quand meme executer le catch !!?
2_ si je supprime le fichier, le programme vas bien aller dans le catch apres le .load, mais le application.exit(); ne fait pas quitter le programme !

a l'aide ! merci

3 réponses

mickbristol78
9 mai 2013 à 22:17
encore moi,

si je remplace l'exception par
catch (FileNotFoundException excep)
alors du coup ca a l'air de marcher mais j'ai une erreur sur mon
listBoxMessages.Items.Add("(" + DateTime.Now + ") " + "Settings.xml loaded properly");
qui dit
Additional information: Object reference not set to an instance of an object.

:(((
0
mickbristol78
9 mai 2013 à 22:40
salut moi, je pense que j'ai trouvé tu vas etre content...

j'ai trouvé mais je sais pas trop expliquer pourquoi...

Ma methode etait appellée depuis le constructeur Form1(), juste apres l'initialisation des composants, mais avant d'autre methodes.

Si je comprends bien, cela veut dire que le application.exit() va effectivement terminer l'application, mais apres avoir fini le constructeur?

j'ai deplacé ma methode sur mon Form1_load() est tout marche..

je ne coche pas tout de suite "reponse acceptée" car j'aimerai bien que qq un m'explique un peu plus le probleme que j'avait.

pourquoi a cette position, le catch n'est effectuer quand il doit etre excecuté, si ma methode etait appellé a partir du constructeur, alors le catch etait appellé a chaque fois ?

merci a tout ceux qui veulent passer qq minutes a m'expliquer, mais aussi merci a moi
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
13 mai 2013 à 11:18
Bonjour,
tout simplement tu ajoutais à listboxmessage des items alors qu'il n'existait pas.
Si tu agis sur des composants graphiques de ton interface, il faut le faire, comme tu l'as trouvé, dans la fonction load.

louis
0
Rejoignez-nous