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

Langage Java Discussion :

List.add() interrompt l'exécution du code


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 71
    Par défaut List.add() interrompt l'exécution du code
    Bonjour,

    J'ai le modèle ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    import java.nio.file.Path;
     
    public class Modele {
     
        public Modele(Path filePath) {
            System.out.println(filePath);
        }
     
    }
    Dans un controleur, j'ai la fonction ci-dessous :

    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
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.util.List;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
     
        private void myMenuFileStart() {
            try {
                boolean add;
                Stream<Path> streamFiles;
                Path startDir;
                List<Path> allFiles;
                List<Modele> mModele = null;
     
                startDir = Paths.get("/");
     
                streamFiles = Files.walk(startDir)
                        .filter(f -> f.getFileName().toString().endsWith("cfg"));
     
                allFiles = streamFiles.collect(Collectors.toList());
     
                for (Path allFile : allFiles) {
                    try {
                        //add = mModele.add(new Modele(allFile));
                        new Modele(allFile);
                        if (add) {
                            System.out.println("ok");
                        } else {
                            System.out.println("PAS OK !!!");
                        }
                    } catch (Exception e) {
                    }
                }
     
            } catch (Exception e) {
            }
     
            // Suite du code
     
        }
    Lorsque je l'execute, le constructeur de Modele affiche bien le path des 406 fichiers recupérés dans la boucle et, après chaque fichier, j'ai bien le "OK" qui apparait et le code en-dessous est exécuté correctement.

    Lorsque je commente la construction du Modele (lignes 26 et 27) pour le mettre dans le List.add(), comme ci-dessous :
    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
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.util.List;
    import java.util.stream.Collectors;
    import java.util.stream.Stream;
     
        private void myMenuFileStart() {
            try {
                boolean add;
                Stream<Path> streamFiles;
                Path startDir;
                List<Path> allFiles;
                List<Modele> mModele = null;
     
                startDir = Paths.get("/");
     
                streamFiles = Files.walk(startDir)
                        .filter(f -> f.getFileName().toString().endsWith("cfg"));
     
                allFiles = streamFiles.collect(Collectors.toList());
     
                for (Path allFile : allFiles) {
                    try {
                        add = mModele.add(new Modele(allFile));
                        //new Modele(allFile);
                        if (add) {
                            System.out.println("ok");
                        } else {
                            System.out.println("PAS OK !!!");
                        }
                    } catch (Exception e) {
                    }
                }
     
            } catch (Exception e) {
            }
     
            // Suite du code
     
        }
    Et bien je n'ai ni le "OK", ni le "PAS OK !!!" qui apparait et en plus, il arrete l'exécution du code.

    Il crée bien les 406 instances de Modele puisque le constructeur m'affiche bien les 406 path passés par la boucle mais je ne vois pas pourquoi le simple fait de faire un List.add() stoppe l'exécution du code.

    J'imagine qu'une subtilité m'a échappé mais je n'arrive pas à trouver d'exemples qui correspondent à mon problème.

    Vous remerciant par avance pour l'aide que vous pourrez m'apporter.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    Beaucoup de choses deviendront beaucoup plus claires en informatique dès que tu arrêteras de faire des choses comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    } catch (Exception e) {
    }
    Pour être très clair, le problème est que le catch{} est vide. Il y a eu une erreur quelque part dans ton programme, et tu interceptes cette erreur, et tu n'en fais rien, tu ne lances pas une autre erreur, tu ne réagis pas à l'erreur, et tu n'écris pas l'erreur dans les logs.
    Autrement dit tu fais tout ton possible pour ne pas savoir ce qui s'est mal passé.
    Dès que tu arrêteras de faire ça, les choses iront mieux.

    Dans le code que tu nous as montré, le mieux est d'enlever les try/catch : ils ne servent à rien, donc il aurait pas fallu les mettre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 71
    Par défaut
    Bien, vu

    Un nullPointerException était levé.

    Il m'a simplement fallu changer l'initialisation de ma collection de Modele comme ci-dessous pour que tout rentre dans l'ordre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Modele> mModele = new ArrayList<>();
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/03/2013, 08h57
  2. Réponses: 1
    Dernier message: 04/12/2008, 13h51
  3. remplissage zone de liste (Combobox) : Erreur d'exécution 1004 !?
    Par ln0331 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/02/2008, 17h02
  4. [VB.NET]listbox.List.Add()
    Par zazaraignée dans le forum Windows Forms
    Réponses: 1
    Dernier message: 04/05/2006, 18h59
  5. Liste de requete SQL à exécuter
    Par dgouyette dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 20/09/2005, 15h29

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