IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Sérieux problème de gestion d'erreur


Sujet :

avec Java

  1. #1
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut Sérieux problème de gestion d'erreur
    Bonjour,

    J'ai réaliser un programme comprenant un main, une classe de gestion et une classe d'erreur.
    Mon principal problème est due au fait que je ne peux pas gérer deux erreurs différentes.

    Quand l'utilisateur apuie sur le bouton initialisé, le programme envoie dans la classe de traitement le chemin puis test celui-ci. Comme le chemin n'existe pas, il va donc lancer une exception avec une erreur. A partir de là on demande à l'utilisateur s'il veut créer le chemin. S'il répond oui, on crée le chemin, sinon non.

    On a créer un chemin, comme l'utilisateur est un vrai boulet, il va à nouveau appuyer sur le bouton initialisé et là c'est un autre type d'erreur que l'on a à aficher. Le chemin est correct et actuelement mon code me demande de créer à nouveau le chemin. Donc on ne sait pas faire la différence entre si le chemin est juste ou non (au niveau des erreurs).

    Si je résume ce que je veux faire.
    1) Le chemin n'est pas présent -> Erreur + voulez-vous créer le chemin
    2) Réponse oui -> création du chemin
    3) Le chemin est présent -> Erreur + Voulez-vous revenir aux valeurs par défauts
    4) Réponse oui -> On procèdera à la réinitialisation des valeurs

    Mon main ressemble à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
     
    import jProperties.*;
    import javax.swing.JOptionPane;
    //import java.io.*;
     
    public class Form1 extends javax.swing.JFrame {
     
        /** Creates new form Form1 */
        public Form1() {
            initComponents();
        }
     
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
     
            jScrollPane1 = new javax.swing.JScrollPane();
            jTextArea1 = new javax.swing.JTextArea();
            jMenuBar1 = new javax.swing.JMenuBar();
            jMenu1 = new javax.swing.JMenu();
            jMenuItem1 = new javax.swing.JMenuItem();
            jMenu2 = new javax.swing.JMenu();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
     
            jTextArea1.setColumns(20);
            jTextArea1.setLineWrap(true);
            jTextArea1.setRows(5);
            jTextArea1.setAutoscrolls(true);
            jScrollPane1.setViewportView(jTextArea1);
     
            jMenu1.setText("Initialiser");
            jMenu1.setToolTipText("Outils d'initialisation logiciel");
     
            jMenuItem1.setText("Initialiser logiciel");
            jMenuItem1.setToolTipText("Créer un fichier properties contenant les paramètres logiciels");
            jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jMenuItem1ActionPerformed(evt);
                }
            });
            jMenu1.add(jMenuItem1);
            jMenuItem1.getAccessibleContext().setAccessibleDescription("null");
     
            jMenuBar1.add(jMenu1);
     
            jMenu2.setText("Affichage");
            jMenuBar1.add(jMenu2);
     
            setJMenuBar(jMenuBar1);
     
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(288, Short.MAX_VALUE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 426, Short.MAX_VALUE)
            );
     
            pack();
        }// </editor-fold>                        
     
        private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
            //Initialisation du logiciel
     
            //Chemin du fichier de configuration
            //String PathConf = "/home/vpn/appli/conf.properties";
            String pathConf = System.getProperty("user.dir") + "/appli/conf.properties";
     
     
            /*
             * Bloc Try/Catch
             * GestionProp gère des erreur est doit être dans un bloc sécurisé
             */
     
            try {
                //Construit un objet GestionProp
                GestionProp Prop = new GestionProp();
     
                //Place le chemin d'un nouveau properties
                Prop.setUrl(pathConf);
     
                //Crée un nouveau properties
                Prop.create();
            }
            catch (ErreurGP e) {
                /*
                 * Traitement de l'erreur par choix utilisateur
                 */
     
                //Choix de résolution de problème
                int choix = JOptionPane.showConfirmDialog(null, "Voulez vous créer le chemin manquant " + pathConf + " ?", "Que voulez-vous faire ?", JOptionPane.ERROR_MESSAGE);
     
                //Traitement des choix
                if (choix == JOptionPane.NO_OPTION) {
                    //On arrêtera le programme
                    JOptionPane.showMessageDialog(null, "Vous ne pourrez pas profiter pleinement du logiciel sans le fichier " + pathConf + " !", "Information", JOptionPane.INFORMATION_MESSAGE);
     
                } else if (choix == JOptionPane.YES_OPTION) {
     
                    //Construit un objet GestionProp
                    GestionProp Prop = new GestionProp();
     
                    //Place le chemin d'un nouveau properties
                    Prop.setUrl(pathConf);
     
                    //Crée un nouveau répertoire
                    Prop.createPath();
     
                    //Crée un nouveau fichier
                    Prop.createProp();
     
                } else if (choix == JOptionPane.CLOSED_OPTION) {
                    //On arrêtera le programme
                    JOptionPane.showMessageDialog(null, "Vous ne pourrez pas profiter pleinement du logiciel sans le fichier " + pathConf + " !", "Information", JOptionPane.INFORMATION_MESSAGE);
                }
            }
     
        }                                          
     
        /**
        * @param args the command line arguments
        */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Form1().setVisible(true);
                }
            });
        }
     
        // Variables declaration - do not modify                     
        private javax.swing.JMenu jMenu1;
        private javax.swing.JMenu jMenu2;
        private javax.swing.JMenuBar jMenuBar1;
        private javax.swing.JMenuItem jMenuItem1;
        private javax.swing.JScrollPane jScrollPane1;
        private javax.swing.JTextArea jTextArea1;
        // End of variables declaration                   
     
    }
    Ma classe de gestion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
     
    package jProperties;
     
    import java.io.*;
    import java.util.Properties;
    import javax.swing.JOptionPane;
     
    public class GestionProp {
     
        /*
         * Méthode : Setter
         * Action : Place l'url du fichier à traiter dans une variable
         * Reçois : Une url, un chemin au format String
         */
     
        public void setUrl(String url) {
            this.urlFichier = url;
        }
     
        /*
         * Méthode : Création
         * Action : Crée un fichier en fonction de l'url transmise
         * Reçois : Une url, un chemin au format String
         */
        public void create() throws ErreurGP {
     
            //Teste la validité du chemin
            if(!validPath()) {
                /*
                 * Le chemin existe pas
                 *
                 * Erreur via ErreurGP(message, type erreur) Chemin [url] manquant, Répertoire manquant
                 */
     
                throw new ErreurGP("Le chemin " + urlFichier + " est manquant\nou le chemin n'existe pas.", "Répertoire ou fichier manquant !");
     
            }
            else {
                /*
                 * Le chemin existe
                 *
                 * Erreur via ErreurGP(message, type erreur) Chemin [url] présent, Répertoire présent
                 */
     
                throw new ErreurGP("Le chemin " + urlFichier + " est présent\nou le chemin existe.", "Répertoire ou fichier présent !");
            }
        }
     
        /*
         * Méthode : Création d'un chemin
         * Action : Crée un chemin en fonction de l'url
         * Reçois : Une url, un chemin au format String
         */
        public void createPath() {
            /*
             * Crée le répertoire
             */
     
            //Extrait le chemin du répertoire en fonction du contenu d' urlFichier
            String newPath = urlFichier.substring(0, urlFichier.lastIndexOf('/'));
     
            //Crée une instance File() pour ce chemin
            File file = new File(newPath);
     
            //Crée physiquement le chemin
            file.mkdir();
        }
     
        /*
         * Méthode : Création d'un fichier properties
         * Action : Crée un fichier en fonction de l'url
         * Reçois : Une url, un chemin au format String
         */
        public void createProp() {
            /*
             * Créer un fichier vide
             */
     
            //Crée une instance Properties()
            Properties prop = new Properties();
     
            /*
             * Bloc Try/Catch
             * Gère des erreur est doit être dans un bloc sécurisé
             */
            try {
                //Crée une instance OutputStream()
                OutputStream propFile = new FileOutputStream(urlFichier);
     
                //Crée une instance OutputStreamWriter() pour passer en UTF-8
                OutputStreamWriter propCreate = new OutputStreamWriter(propFile, "UTF-8");
     
                //Crée un nouveau fichier avec un commentaire
                prop.store(propCreate, "@Autor");
     
                //Ferme le flux de création de fichier
                propCreate.flush();
                propCreate.close();
            }
            catch(FileNotFoundException e) {
                //Indique les ereurs
                e.printStackTrace();
            }
            catch(IOException e) {
                //Indique les ereurs
                e.printStackTrace();
            }
        }
     
        /*
         * Méthode : Tester
         * Action : Tester la validité d'un chemin depuis l'url locale
         * Reçois : Une url, un chemin au format String
         * Retourne : Un true ou un False en fonction du chemin
         * */
        public boolean validPath() {
     
            //Si le chemin existe et si il est disponible
            if(new File(urlFichier).exists()) {
                return true;    //Retourner vrai
            }
            else {
                return false;   //Sinon retourner faux
            }
        }
     
        /*
         * Champ de la classe GestionProp
         */
     
        private String urlFichier;
    }
    Et enfin, ma classe posant problème, comme le reste d'ailleurs car le fonctionnement n'est pas correct. La classe d'ereur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    package jProperties;
     
    import javax.swing.JOptionPane;
     
    public class ErreurGP extends Exception {
     
        /*
         * Méthode : Affichage
         * Action : Crée une exception si une erreur survient
         * Reçois : Une url, un chemin au format String
         */
        public ErreurGP(String msgErreur, String typeErreur) {
     
            this.message = msgErreur;   //Message d'erreur
            this.typeErr = typeErreur;  //Type de l'erreur
     
            JOptionPane.showMessageDialog(null, message, typeErr, JOptionPane.ERROR_MESSAGE);
        }
     
     
        /*
         * Méthode : Getter
         * Action : Affiche l'erreur au programmeur ou à l'utilisateur
         * Reçois : Rien
         */
        public String getErreur() {
            return this.message;
        }
     
        /*
         * Les méthodes de la classe ErreurUrl
         */
     
        private String message;
        private String typeErr;
    }
    J'aimerais ne pas avoir à tout refaire mais j'avoue que comme je trouve mon main plutôt chargé je me tâte.
    Existe-il un moyen de gérer par plusieurs catch ?
    Comment rendre ma classe d'erreur utilisable ?
    Enfin pourquoi dès que je veux ajouter une nouvelle erreur dans ma classe d'erreur celle-ci est considéré en erreur ?

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,

    Citation Envoyé par Microbulle Voir le message
    Existe-il un moyen de gérer par plusieurs catch ?
    il est en effet possible de catcher plusieurs exception, comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try {
       // traitement qui throw plusieurs exception 
    } catch (ErreurGP egp) {
       // Traitement de l'exception
    } catch (Exception e) {
       // Traitement de la 2eme exception
    }
    Pour plus d'infos sur les exceptions : Les exceptions et les bonnes pratiques

    Les exceptions est un mécanisme relativement couteux. Il ne faut pas l'utiliser dans n'importe quels cas.
    Dans l'exemple que tu donnes je pense qu'il n'est pas utile de lancer une exception sur le répertoire manquant, vu que tu propose de le créer. En plus cela va compliquer le code.

    Citation Envoyé par Microbulle Voir le message
    Comment rendre ma classe d'erreur utilisable ?
    Enfin pourquoi dès que je veux ajouter une nouvelle erreur dans ma classe d'erreur celle-ci est considéré en erreur ?
    Et la ???? je ne comprend même pas les questions !
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    En fait, au départ j'ai mis en place une gestion d'erreur afin de simplifier les tâches de développement. Je me rends bien compte que ma classe est lourde mais mon main deviens une vrai horreur !

    Traiter en dehors des erreurs car on demande à la création du chemin. Bah oui mais en fait quand on y réfléchi bien, le fait de proposé est un cas exotique. A moins que je ne face l'erreur entre classe et fonction...

    J'avoue que j'en perds mon latin !

    Ce que je propose c'est de retirer la classe de gestion d'erreur, de revenir à une classe simple et d'appeler les ordres depuis le main. Ainsi ça serais au main de demander quoi faire et de le faire. Enfin c'est ce que je suppose être.

    Pour ta question, comme je suis arrivé sur un point trop peu correct je me retrouve cloisonné avec des éléments qui me mange trop de choses par rapport à la classe. c'est entre autre pour ça que je demandais comment je puis utilisé tout ça.

    Maintenant s'il s'avère qu'il faut que je change du tout au tout mon code, alors il n'en ai plus question.

    Dernier point, dans ma classe GestionProp, j'ai déclenché le test avec le create() mais en fait si c'est logique, ne serais pas au main de poser la question puis d'agir en fonction ?

  4. #4
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Excusez-moi du double post.

    J'ai re pensé à ce que j'ai lue dans la réponse donné. Effectivement j'ai retirer un fichier qui gérer les erreurs. J'ai aussi retirer le try/catch sachant que je n'avais plus d'erreur à gérer. Maintenant c'est beaucoup plus clair !

    Mon main ressemble à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
     
    import jProperties.*;
    import javax.swing.JOptionPane;
     
    public class Form1 extends javax.swing.JFrame {
     
        /** Creates new form Form1 */
        public Form1() {
            initComponents();
        }
     
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
     
            jScrollPane1 = new javax.swing.JScrollPane();
            jTextArea1 = new javax.swing.JTextArea();
            jMenuBar1 = new javax.swing.JMenuBar();
            jMenu1 = new javax.swing.JMenu();
            jMenuItem1 = new javax.swing.JMenuItem();
            jMenu2 = new javax.swing.JMenu();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
     
            jTextArea1.setColumns(20);
            jTextArea1.setLineWrap(true);
            jTextArea1.setRows(5);
            jTextArea1.setAutoscrolls(true);
            jScrollPane1.setViewportView(jTextArea1);
     
            jMenu1.setText("Initialiser");
            jMenu1.setToolTipText("Outils d'initialisation logiciel");
     
            jMenuItem1.setText("Initialiser logiciel");
            jMenuItem1.setToolTipText("Créer un fichier properties contenant les paramètres logiciels");
            jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jMenuItem1ActionPerformed(evt);
                }
            });
            jMenu1.add(jMenuItem1);
            jMenuItem1.getAccessibleContext().setAccessibleDescription("null");
     
            jMenuBar1.add(jMenu1);
     
            jMenu2.setText("Affichage");
            jMenuBar1.add(jMenu2);
     
            setJMenuBar(jMenuBar1);
     
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(288, Short.MAX_VALUE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 426, Short.MAX_VALUE)
            );
     
            pack();
        }// </editor-fold>                        
     
        private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
            //Initialisation du logiciel
     
            //Chemin du fichier de configuration
            String pathConf = System.getProperty("user.dir") + "/appli/conf.properties";
     
            //Crée une nouvelle instance de la classe Gestionprop()
            GestionProp prop = new GestionProp();
     
            //Ajoute à l'instance le chemin
            prop.setUrl(pathConf);
     
            //Test si le chemin est invalide
            if(!prop.validPath()) {
                JOptionPane.showMessageDialog(null, "Le chemin " + pathConf + " est manquant\nou le chemin n'existe pas.", "Répertoire ou fichier manquant !", JOptionPane.ERROR_MESSAGE);
                int choix = JOptionPane.showConfirmDialog(null, "Voulez vous créer le chemin manquant " + pathConf + " ?", "Que voulez-vous faire ?", JOptionPane.ERROR_MESSAGE);
     
                if (choix == JOptionPane.NO_OPTION) {
                    //On arrêtera le programme
                    JOptionPane.showMessageDialog(null, "Vous ne pourrez pas profiter pleinement du logiciel sans le fichier " + pathConf + " !", "Informations", JOptionPane.INFORMATION_MESSAGE);
     
                } else if (choix == JOptionPane.YES_OPTION) {
                    //Crée un nouveau répertoire
                    prop.createPath();
     
                    //Crée un nouveau fichier
                    prop.createProp();
     
                } else if (choix == JOptionPane.CLOSED_OPTION) {
                    //On arrêtera le programme
                    JOptionPane.showMessageDialog(null, "Vous ne pourrez pas profiter pleinement du logiciel sans le fichier " + pathConf + " !", "Information", JOptionPane.INFORMATION_MESSAGE);
                }
            }
            else {
                JOptionPane.showMessageDialog(null, "Le chemin " + pathConf + " est présent\nou le chemin est déjà crée.", "Répertoire ou fichier présent !", JOptionPane.ERROR_MESSAGE);
            }
    }                                          
     
        /**
        * @param args the command line arguments
        */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Form1().setVisible(true);
                }
            });
        }
     
        // Variables declaration - do not modify                     
        private javax.swing.JMenu jMenu1;
        private javax.swing.JMenu jMenu2;
        private javax.swing.JMenuBar jMenuBar1;
        private javax.swing.JMenuItem jMenuItem1;
        private javax.swing.JScrollPane jScrollPane1;
        private javax.swing.JTextArea jTextArea1;
        // End of variables declaration                   
     
    }
    et enfin ma classe a été épurer. Maintenant elle ressemble à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
     
    package jProperties;
     
    import java.io.*;
    import java.util.Properties;
     
    public class GestionProp {
     
        /*
         * Méthode : Setter
         * Action : Place l'url du fichier à traiter dans une variable
         * Reçois : Une url, un chemin au format String
         */
     
        public void setUrl(String url) {
            this.urlFichier = url;
        }
     
    public void createPath() {
            /*
             * Crée le répertoire
             */
     
            //Extrait le chemin du répertoire en fonction du contenu d' urlFichier
            String newPath = urlFichier.substring(0, urlFichier.lastIndexOf('/'));
     
            //Crée une instance File() pour ce chemin
            File file = new File(newPath);
     
            //Crée physiquement le chemin
            file.mkdir();
        }
     
        /*
         * Méthode : Création d'un fichier properties
         * Action : Crée un fichier en fonction de l'url
         * Reçois : Une url, un chemin au format String
         */
        public void createProp() {
            /*
             * Créer un fichier vide
             */
     
            //Crée une instance Properties()
            Properties prop = new Properties();
     
            /*
             * Bloc Try/Catch
             * Gère des erreur est doit être dans un bloc sécurisé
             */
            try {
                //Crée une instance OutputStream()
                OutputStream propFile = new FileOutputStream(urlFichier);
     
                //Crée une instance OutputStreamWriter() pour passer en UTF-8
                OutputStreamWriter propCreate = new OutputStreamWriter(propFile, "UTF-8");
     
                //Crée un nouveau fichier avec un commentaire
                prop.store(propCreate, "@Autor");
     
                //Ferme le flux de création de fichier
                propCreate.flush();
                propCreate.close();
            }
            catch(FileNotFoundException e) {
                //Indique les ereurs
                e.printStackTrace();
            }
            catch(IOException e) {
                //Indique les ereurs
                e.printStackTrace();
            }
        }
     
        /*
         * Méthode : Tester
         * Action : Tester la validité d'un chemin depuis l'url locale
         * Reçois : Une url, un chemin au format String
         * Retourne : Un true ou un False en fonction du chemin
         * */
        public boolean validPath() {
     
            //Si le chemin existe et si il est disponible
            if(new File(urlFichier).exists()) {
                return true;    //Retourner vrai
            }
            else {
                return false;   //Sinon retourner faux
            }
        }
     
        /*
         * Champ de la classe GestionProp
         */
     
        private String urlFichier;
    }
    J'ai tester ça marche. Mais dites-moi, est-ce la bonne démarche ?

Discussions similaires

  1. Zend_Form Problème de gestion des erreurs
    Par flilou dans le forum Zend Framework
    Réponses: 19
    Dernier message: 13/07/2011, 09h25
  2. Problème de gestion des erreurs avec le module RIO
    Par menina_raquel dans le forum Ruby
    Réponses: 0
    Dernier message: 04/01/2011, 16h30
  3. [XL-2007] Problème de gestion d'erreurs?
    Par neiluj26 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/07/2010, 14h04
  4. [Upload] Problème pour gestion d'erreur avec class
    Par allserv dans le forum Langage
    Réponses: 2
    Dernier message: 27/12/2005, 13h00
  5. problème de gestion d'erreurs
    Par champijulie dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/05/2005, 17h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo