Probleme try catch pour ouvrir un fichier

Signaler
-
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
-
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


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.

:(((

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
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
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