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 :

Problème gestion IOException


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 50
    Points : 39
    Points
    39
    Par défaut Problème gestion IOException
    Bonjour à tous,

    le titre est explicite, j'ai inséré mon code dans un programme déjà existant. Mon code nécéssitait l'import java.IOException pour la fonction postprocessAudit() que j'ai réalisé dans le nouveau code seulement quand je veux appeler la méthode via un autre fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void run() {
     
    MainFrame.this.postprocessAudit();
     
    }
    Eclipse me signale une erreur et m'indique de mettre throws java.IOException juste à côté de run(), et si je le mets j'ai une erreur.

    Auriez vous une idée ou une explication car je ne suis pas du tout expert en exception

  2. #2
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Salut

    Pour les exceptions, je te conseille de lire un bouquin car c'est un gros morceau de Java et une bonne connaissance du fonctionnement de celles ci est indispensable.

    Pour ton code tu peux faire la chose suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void run() {
       try {
          MainFrame.this.postprocessAudit();
       } catch (IOException ioe) {
          // Erreur ! Que fait-on ?
          ioe.printStackTrace(); // affiche l'erreur sur la sortie d'erreur.
       }
     }
    Ce qui signifie :

    try { , essaie d'exécuter le code ci dessous.
    ....... exécution du code.
    } catch (IOException ioe { , dès qu'il y a une erreur de type Entrée/Sortie (IO), exécute le code ci dessous. sinon continuer plus loin
    ....
    }
    .....

  3. #3
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Bonjour,
    si la méthode postprocessAudit() est throw IOException, cela signifie que par le suite l'exception devra être traité ou renvoyer (pour traitement ultérieur).

    pour traiter l'exception il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void run() {
       try {
          MainFrame.this.postprocessAudit();
       } catch (IOException  e) {
          //traitement de l'exception
       }
    }
    pour la renvoyée il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void run() throws IOException{ //c'est la methode qui appelera run qui devra traiter IOEception
       MainFrame.this.postprocessAudit();
    }

  4. #4
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Vu le nom de la méthode, il y a de grande chance qu'il s'agisse du run() de Thread ou de Runnable, on ne peut donc renvoyée l'exception ce qui se caractèrise par ce qu'a dit matt8-5 :

    Citation Envoyé par matt8-5
    Eclipse me signale une erreur et m'indique de mettre throws java.IOException juste à côté de run(), et si je le mets j'ai une erreur.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 50
    Points : 39
    Points
    39
    Par défaut
    en effet il s'agit d'un run de thread j'avai oublié :

    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
    Thread postProcessThread = new Thread(new Runnable() {
    						public void run() {
     
    							try {
    							      MainFrame.this.postprocessAudit();
    							   } catch (IOException ioe) {
    							      // Erreur ! Que fait-on ?
    							      ioe.printStackTrace(); // affiche l'erreur sur la sortie d'erreur.
    							   }
     
     
     
    						}
    					}, "Postprocess");
    					postProcessThread.start();
    ]

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 50
    Points : 39
    Points
    39
    Par défaut
    J'ai encore deux trois erreur erreurs dont un nullpointer Exception mais je te remercie yann pour tes infos et je V me plongé dans la doc...

    Merci encore

  7. #7
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Personellement, IOExcetion je la traiterait directement dans la classe ou tu manipules les flux.
    En effet dans ce genre de cas tu ouvre probablement des flux qu'il faut absolument fermer

    donc je verrais plutôt quelquechose dans ce style, c'est beaucoup plus sûr en ce qui concerne ton code

    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
     
    public void  postprocessAudit() {
      File f = new File("monFichier");
      BufferedInputStream bin = null;
      try {
          bin = new (BufferedInputStream ( new FileReader (f));
          doSomething();
      }catch (IOException e) {
         doSomethingElse();
      } finally {
         if (bin!=null) {
            bin.close();
         }
      } 
    }
    Dans ec cas tu es sûr que ton flux est fermé (grâce au bloc finally), alors qu'autrement tu ne peux le savoir.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 50
    Points : 39
    Points
    39
    Par défaut
    Mon code se présente sous cette forme :

    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
    public static void main(String[] args)throws IOException
    	{	// Nombre d'equpement à audité
    		int Eqptaudited=1;
     
    		// Outputfile for commands results
    		String output="D:"+File.separator+"Documents and Settings"+File.separator+"msenard"+File.separator+"Desktop"+File.separator+"outputest4"; 
    		String eqpt_name="iGGSN_3750_1"; //equpment name in Excel file
    		String type="CISCO"; // Equipment type : in the XML file
    		 // Logfile of the command that we wish analyzed
     
     
    		// Create Post-processing output File 
     
    		FileOutputStream Synt = new FileOutputStream(output+File.separator+"synthese.xls");
     
     
    		// While there are Equipments audited
    		while (Eqptaudited !=0){
     
    			if (type=="CISCO"){ // Post-processing to do for each equipment type
     
    				iosversion(output,eqpt_name,Synt);
    				supe(output,eqpt_name,Synt);
     
    			}
     
     
     
    			Eqptaudited--;	
     
    			}
    		Synt.close();
     
    		System.out.println("fin du Whillllllle");
     
     
     
     
     
    	}

    ok je vai testé dans mon code

Discussions similaires

  1. Problème gestion formulaire et repertoire destination
    Par noobspower dans le forum Langage
    Réponses: 5
    Dernier message: 28/02/2007, 13h59
  2. Problème gestion de collisions
    Par kaien dans le forum Physique
    Réponses: 6
    Dernier message: 31/01/2007, 15h31
  3. [C# 2.0] Problème gestion mémoire
    Par Stéphane-M dans le forum Windows Forms
    Réponses: 13
    Dernier message: 21/09/2006, 14h36
  4. Problème gestion actionListener pour JButton
    Par cedricbr dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 26/05/2006, 16h39
  5. Problème - Gestion des exceptions - MFC.
    Par Atomikx dans le forum MFC
    Réponses: 4
    Dernier message: 14/11/2005, 09h38

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