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

Entrée/Sortie Java Discussion :

BufferedOutputStream et les try/catch


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Découvre Netbeans et Java
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Découvre Netbeans et Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 16
    Points
    16
    Par défaut BufferedOutputStream et les try/catch
    Bonjour,

    Je n'arrive pas a resoudre mon probleme (qui n'en aurait pas ete un si je l'avais ecrit sous C). Je vais essayer de le decrire precisement.

    Dans un programme, si Je veux ouvrir un fichier pour y ecrire, j'utilise un truc du genre
    BufferedOutputStream buff = new BufferedOutputStream(new FileOutputStream(nom_fichier,true));
    puis je fais un buff.write et buff.close, jusque la rien de sorcier.

    Maintenant, si mon programme doit faire appel a 10 methodes qui, chacune, ecrivent dans le meme fichier, je devrais donc copier coller ce code dans toutes les 10 methodes... Lourdingue.
    Donc je me disais, est-ce que, comme en C, je pourrai faire une classe a part entiere, que je vais appeler genre "Fichier". La classe aurait 3 methodes publiques: ouverture du stream, ecriture du stream, fermeture du stream.
    Comme ca, dans mon main, j'appellerai une seule fois Fichier.ouverture(...), puis j'appelle mes 10 methodes qui vont successivement invoquer Fichier.ecriture(...), puis a la fin, de retour dans mon main, je fais un Fichier.fermeture(). Voila pour l'idee. Maintenant je bloque completement sur l'implementation.

    Pour Fichier.ouverture: je passe en parametre le nom du fichier a ouvrir et il me renvoie un type BufferedOutputStream, logique. J'ai ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Fichier {
     
        public BufferedOutputStream File_Append(String nom_fic) {
            BufferedOutputStream buff = new BufferedOutputStream(new FileOutputStream(nom_fic,true));
            return buff;
        }
    }
    Sauf que Java refuse car il me dit que FileOutputStream peut generer des exceptions donc je dois obligatoirement mettre un try/catch. Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        public BufferedOutputStream File_Append(String nom_fic) {
            try {
                BufferedOutputStream buff = new BufferedOutputStream(new FileOutputStream(nom_fic,true));
                return buff;
            } catch(FileNotFoundException ex) {
                    System.out.println("Exception : " + ex);
                }
            return buff;
        }
    }
    Oui mais voila, la variable buff etant dans un bloc try/catch, le dernier return buff hors du bloc try refuse de compiler puisqu'il ne connait pas cette variable... La question a 1 million: comment je contourne ca? Si tant est que c'est faisable.. Sinon bah ce sera du copier coller a la con sur mes 10 methodes. Merci Java...
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    1. Pour ce qui est de ta méthode, si il n'y a pas de fichier, il n'y a donc pas de OutputStream à retourner, donc tu retournes simplement null

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
       public BufferedOutputStream open(String nomFichier) {
              try {
                  BufferedOutputStream buff = new BufferedOutputStream(new FileOutputStream(nomFichier,true));
                  return buff;
              } catch(FileNotFoundException ex) {
                      System.out.println("Exception : " + ex);
                  }
              return null;
          }
      Et ton appel devra prendre en compte ce cas.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      BufferedOutputStream outputStream = fichier.open("blahblah");
      if ( outputStream==null ) {
          // ce n'est pas la peine de chercher à écrire dans rien
      }
    2. Tu peux aussi renvoyer les erreurs a l'appelant sans avoir à les catcher, d'autant plus que le FileNotFound peut être facilement évité en faisant un new File(nomFichier).getParentFile().mkdirs(), ou Files.createDirectories(Paths.get(nomFichier).getParent()), en utilisant une UncheckedIOException :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
       public BufferedOutputStream open(String nomFichier) {
              try {
                  return new BufferedOutputStream(new FileOutputStream(nomFichier,true));
              } catch(FileNotFoundException ex) {
                      throw new UncheckedIOException(ex);
                  }
          }
    3. Tu ne devrais pas procéder autrement que par un try/catch/finally, voire même mieux, avec un try-with-resource/catch, pour garantir la fermeture, dans tous les cas. Il faudrait voir exactement ce que c'est ces 10 méthodes et pourquoi elles seraient externes au processus d'écriture du fichier, mais même si, il y'a plusieurs manières de résoudre le problème. De toute manière toutes tes écritures vont soulever une IOException, donc tu auras quand même des try/catch, pour chacune de tes méthodes. Autant n'en avoir qu'un seul.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Découvre Netbeans et Java
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Découvre Netbeans et Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Merci pour tes conseils. Alors effectivement, ca se voit a la "craditude" de mon code, je debute gentiment le Java (pour le plaisir) et je voulais commencer par des trucs simples
    Du coup je voulais faire un petit programme pour cartographier l'arborescence d'un repertoire de mon disque, recursivement bien sur. Et cette cartographie doit etre logguee dans un fichier arbo.txt. Et pourquoi pas plus tard faire un web crawler dans le genre. Alors oui, quand je disais 10 methodes, j'exagerais un peu beaucoup, pour l'instant c'est 2 methodes pour commencer. Mais qui sait quand ca se complexifiera. Bref.

    Algorithmiquement parlant, ma methode de cartographie recursive serait a peu pres comme ca:
    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
     
    methode Carto(string chemin_a_cartographier)
    {
     Lire le premier element du repertoire et l'ecrire dans arbo.txt;
     Tant qu'il reste des elements a cartographier
     {
       Lire l'element suivant;
       Si c'est un dossier alors
       {
         Ecrire le chemin du dossier dans arbo.txt;
         Invoquer Carto(ce_dossier); // recursivement
        }
       Sinon Ecrire le chemin du fichier dans arbo.txt; // puisque c'est un fichier, pas besoin d'explorer
      // Lire le fichier_suivant etc. etc. en boucle jusqu'a plus de fichier a repertorier;
     }
    }
    Donc ca suppose qu'avant d'invoquer la premiere fois la methode de cartographie, j'ouvre en ecriture mon map.txt, puis quand tout est termine je le referme. Parce que sinon je serai oblige a chaque fois que je veux logger un element => ouvrir arbo.txt, ecrire, flush, fermer arbo.txt. Or les operations disque de ce type sont lents, c'est pour ca que je voulais eviter de fermer ouvrir a tour de bras. Je ne sais pas si c'etait clair, en tout cas c'etait mon idee

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Un exemple simple, c'est de faire de l'objet et d'encapsuler tout ce comportement dans un objet destiné à la cartographie.

    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
    public class Cartographie implements AutoCloseable {
     
        private BufferedOutputStream stream;
     
        public class Cartographie(String destination) throws IOException {
            this.stream = new BufferedOutputStream(new FileOutputStream(destination));
        }
        @Override
        public void close() throws IOException {
            stream.close();
        }
        public void cartographier(String chemin) throws IOException {
            //...
            ecrire(nom)
            // ....
            cartographier(sousdossier);
            //....
        }
        private void ecrire (String nom) {
            //.... stream.write(....)
        }
    }

    et dans le main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try (Cartographie  c = new Cartographie("chemin/vers/arbo.txt")) {
       c.cartographier("c:\\Users\\tchize\\documents");
       c.cartographier("c:\\Users\\tchize\\pictures");
    } catch (IOException e) {
      e.printStackTrace();
    }
    Au passage, vu que tu écris dans un fichier .txt, utiliser peut être des Writer plutot que des Stream

  5. #5
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Non Non

    un principe général lorsqu'on travaille avec une ressources on ouvre la ressource dans un try on se sert de la ressource et on la ferme.
    pour faciliter ce travail java7 à introduit le "try with resource"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    try (Resource r = openRessource();) {
       r.put("data");
    }
    C'est java qui va s'occuper de fermer la ressource.
    donc la procédure qui ouvre la ressource doit thrower les exceptions et c'est à l'appelant de les mettre dans un try
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public BufferedOutputStream open(String nomFichier) 
      throw FileNotFoundException, IOException ....
    {
       BufferedOutputStream buff = new BufferedOutputStream(new FileOutputStream(nomFichier,true));
       return buff;
    }
    ainsi l'appelant peut utiliser ta méthode open dans un try with resource (ou en java avant 7 dans un try ) la seule contrainte pour que ça fonctionne avec java7 est que que ta classe doit implémenter Closeable
    A+JYT

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    En complément, tu peux regarder Files.walkFileTree(Path, SimpleFileVisitor).

    Un exemple qui écrit l'arborescence d'un dossier dans un fichier :
    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
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.nio.file.FileVisitResult;
    import java.nio.file.Files;
    import java.nio.file.OpenOption;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.SimpleFileVisitor;
    import java.nio.file.StandardOpenOption;
    import java.nio.file.attribute.BasicFileAttributes;
    import java.util.Arrays;
    import java.util.HashSet;
    import java.util.Set;
     
    public class FileTree {
     
    	public static void main(String[] args) {
     
    		try {
     
    			// écrit l'arborescence du dossier D:/FILES/DOC à la suite dans le fichier "C:/TEMP/tree.txt"
    			new FileTree().writeTree("D:/FILES/PHOTOS","C:/TEMP/tree.txt",StandardOpenOption.APPEND);
     
    			// affiche le contenu du fichier créé en console
    			Files.lines(Paths.get("C:/TEMP/tree.txt")).forEach(System.out::println);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
     
    	}
     
    	public void writeTree(String dirPath, String targetPath, OpenOption...options) throws IOException {
    		writeTree(dirPath, targetPath, 4, options);
    	}
     
    	public void writeTree(String dirPath, String targetPath, int indentAmount, OpenOption...options) throws IOException {
     
    		Path path = Paths.get(dirPath);
     
    		if ( !Files.exists(path) ) throw new FileNotFoundException("Directory not found: "+ dirPath);
    		else if ( !Files.isDirectory(path) ) throw new IOException("Not a directory: "+dirPath);
     
    		Path target = Paths.get(targetPath);
    		if ( !Files.exists(target) ) {
    			Set<OpenOption> o = new HashSet<>(Arrays.asList(options));
    			Path targetDir = target.getParent();
    			if ( o.contains(StandardOpenOption.CREATE) ) {
    				if ( Files.isDirectory(targetDir) ) {
    					throw new IOException(targetDir + " is exist as a file");
    				}
    				Files.createDirectory(targetDir);
    			}
    			else {
    				if ( o.contains(StandardOpenOption.APPEND) ) {
    					o.add(StandardOpenOption.CREATE);
    					options = o.toArray(new OpenOption[o.size()]);
    				}
    			}
    		}
     
    		try(PrintWriter writer = new PrintWriter(Files.newBufferedWriter(target,options))) {
     
    			Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
     
    				int indent = 0;
    				int filecount = 0;
     
    				@Override
    				public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
    					if ( dir.equals(path)) {
    						writer.print("Tree of ");
    						writer.println(dir);
    					}
    					else {
    						indent(writer);
    						writer.print("Dir: ");
    						writer.println(dir);
    					}
    					indent+=indentAmount;
    					return FileVisitResult.CONTINUE;
    				}
     
    				@Override
    				public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
    					indent-=indentAmount;
    					if ( dir.equals(path)) {
    						writer.println("File count: "+filecount);
    					}
    					return FileVisitResult.CONTINUE;
    				}
     
    				@Override
    				public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
    					if ( !Files.isHidden(file) ) {
    						indent(writer);
    						writer.println(file);
    						filecount++;
    					}
    					return FileVisitResult.CONTINUE;
    				}
     
    				private void indent(PrintWriter writer) throws IOException {
    					for(int i=0; i<indent; i++) {
    						writer.write(' ');
    					}
    				}
     
    			});
     
    		} 
     
    	}
     
     
    }
    Résulat :
    Tree of D:\FILES\PHOTOS
        Dir: D:\FILES\PHOTOS\2 Alpes
            D:\FILES\PHOTOS\2 Alpes\IMG_1597.JPG
            [...]
            D:\FILES\PHOTOS\2 Alpes\MVI_1671.MP4
        Dir: D:\FILES\PHOTOS\BACKUP_PHONE
            D:\FILES\PHOTOS\BACKUP_PHONE\20150218_212509.jpg
            [...]
            D:\FILES\PHOTOS\BACKUP_PHONE\20150319_225603.jpg
        Dir: D:\FILES\PHOTOS\CENTER PARKS JUILLET 2014
            Dir: D:\FILES\PHOTOS\CENTER PARKS JUILLET 2014\20140707
                D:\FILES\PHOTOS\CENTER PARKS JUILLET 2014\20140707\IMG_0823.JPG
                [...]
                D:\FILES\PHOTOS\CENTER PARKS JUILLET 2014\20140707\MVI_0834.MP4
            Dir: D:\FILES\PHOTOS\CENTER PARKS JUILLET 2014\20140708
                D:\FILES\PHOTOS\CENTER PARKS JUILLET 2014\20140708\IMG_0854.JPG
                [...]
                D:\FILES\PHOTOS\CENTER PARKS JUILLET 2014\20140708\IMG_0883.JPG
        Dir: D:\FILES\PHOTOS\MAI 2014
            Dir: D:\FILES\PHOTOS\MAI 2014\AVANT DEPART PARIS
                D:\FILES\PHOTOS\MAI 2014\AVANT DEPART PARIS\IMG_0049.JPG
                [...]
                D:\FILES\PHOTOS\MAI 2014\AVANT DEPART PARIS\IMG_0057.JPG
            D:\FILES\PHOTOS\MAI 2014\Expo MARVEL - 20140507.png
            Dir: D:\FILES\PHOTOS\MAI 2014\VOYAGE A PARIS
                Dir: D:\FILES\PHOTOS\MAI 2014\VOYAGE A PARIS\20140504
                    D:\FILES\PHOTOS\MAI 2014\VOYAGE A PARIS\20140504\IMG_0058.JPG
                    [...]
                    D:\FILES\PHOTOS\MAI 2014\VOYAGE A PARIS\20140504\MDG_0069.MP4
                Dir: D:\FILES\PHOTOS\MAI 2014\VOYAGE A PARIS\20140505
                    D:\FILES\PHOTOS\MAI 2014\VOYAGE A PARIS\20140505\IMG_0093.JPG
                    [...]
                    D:\FILES\PHOTOS\MAI 2014\VOYAGE A PARIS\20140505\MDG_0101.MP4
                Dir: D:\FILES\PHOTOS\MAI 2014\VOYAGE A PARIS\20140506
                    D:\FILES\PHOTOS\MAI 2014\VOYAGE A PARIS\20140506\IMG_0275.JPG
                    [...]
                    D:\FILES\PHOTOS\MAI 2014\VOYAGE A PARIS\20140506\MVI_0443.MP4
    [...]                
    File count: 5888
    
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Découvre Netbeans et Java
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Découvre Netbeans et Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Merci beaucoup a tous pour vos precieux conseils. J'avais failli abandonner et me rabattre sur un autre contournement, a savoir qu'au lieu d'ecrire au fur et a mesure dans le fichier a chaque appel de la methode, je stockais ca dans un long long string (+"\n" bien sur) et ce string a la toute fin je l'ecris dans le fichier. L'inconnu restait alors si le string serait assez long en cas de grosse arborescence.
    Mais je vais plancher sur ce qu'a dit sekaijin. Faut bien apprendre les bonnes manieres

    joel.drigo: merci pour la methode, ici j'ai l'air de vouloir reinventer la roue mais en fait c'est juste un exercice personnel pour me remettre doucement a la programmation (et decouvrir Java) et j'avais en vue plus tard de faire un cartographeur d'URL pour faire un web crawler, sur des sites qui autorisent le parcours de l'arborescence, of course. Du coup, le Files.walkfileTree ne marcherait plus sur des URL ^^. Mais je note la methode.

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Clocloc Voir le message
    Du coup, le Files.walkfileTree ne marcherait plus sur des URL
    Non, en effet, mais le principe reste le même (pattern visitor, et c'est aussi dans cette idée que je t'ai montré ça), dans l'ordre d'idée de ce que t'as indiqué @Tchize, qui exploite ce dont parle @Seikajin (dans son message, il y a une petit erreur : la classe doit implément AutoCloseable (voir exemple de @Tchize_) et non Closeable, pour être traitée par try-with-resource.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Découvre Netbeans et Java
    Inscrit en
    Avril 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Découvre Netbeans et Java
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2015
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Yipikai, ca a fonctionne du tonnerre l'astuce de seikaijin de thrower tout a l'appelant. C'est tellement genial que je n'y avais jamais songe. D'un autre cote maintenant je comprends mieux l'enorme interet du throws, clairement.
    Gros merci encore a vous, forcement quand on a les bons conseils on progresse beaucoup plus vite. Comment on passe a resolu ce truc?

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

Discussions similaires

  1. [Drupal] pas de try catch dans les classes
    Par mapmip dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 25/11/2014, 16h30
  2. Optimiser les performances try/catch ?
    Par KiLVaiDeN dans le forum Langage
    Réponses: 4
    Dernier message: 14/01/2014, 13h47
  3. Les Exceptions ,Try Catch
    Par ginos dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 03/05/2008, 09h15
  4. comment fonctionne les "try-catch" en pgsql
    Par charlie_p07 dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 13/03/2008, 17h57
  5. [try-catch] relancer les instruction du bloc try
    Par nounou dans le forum Langage
    Réponses: 11
    Dernier message: 12/05/2004, 11h23

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