Problème bloc try-catch dans code

little pepito Messages postés 13 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 9 juin 2007 - 9 juin 2007 à 10:33
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010 - 9 juin 2007 à 14:10
Bonjour,
J'ai un petit problème dans une méthode run en cours de développement.
Je voudrais insérer 2blocs try-catch dans un autre bloc try-catch(qui les englobe donc).
Mais il me met comme erreur que une InterruptedException n'est jamais lancée dans le corps du try correspondant .
Or selon moi ce n'est pas le cas :s

Si quelqu'un pouvait m'aider ce serait sympa
Merci
Voici le code :



public void run() {
  
     
        try{
            synchronized(this){
       
                    try{
                       
            for ( int k = 0,plaque=0 ; k < 50; k++ , plaque++)  
              System.out.println (  "Je crée un objet " + k );
              Voiture alpha = new Voiture(plaque);
              v.addElement(alpha);
            // g.addElement(alpha);
              System.out.println("taille du vecteur : "+v.size());
              System.out.println ("plaque = "+plaque);
              
             
              delay = (int)((Math.random())*20000);
              Thread.sleep ( delay );  
              System.out.println("delay = "+delay); 
              System.out.println("k = "+ k );
              System.out.println("t = "+ t);
              }}
                
               catch( InterruptedException e ) {
            System.out.println("Interrupted Exception caught");
        }}
            synchronized (this) {
    try  {for (int j=0;j<v.size();j++){                                  
                int delay2 = (int)((Math.random())*38000);
                Thread.sleep(delay2);
                v.removeElementAt(j);}
                                        }
    catch(InterruptedException e){System.out.println("Interrupted Exception caught");}}
       
      
   
 
    
}    
 catch(InterruptedException e){System.out.println("Interrupted Exception caught");}   





}


<!-- BEGIN TEMPLATE: bbcode_code -->

3 réponses

cedicat Messages postés 16 Date d'inscription samedi 30 août 2003 Statut Membre Dernière intervention 9 juin 2007
9 juin 2007 à 10:40
les {} avec le synchronized et le second try se chevauchent.
0
little pepito Messages postés 13 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 9 juin 2007
9 juin 2007 à 10:50
Non, il me semble que les {} sont ok.
Je viens encore de revérifier avec Netbeans, qui me les met en couleur.
Ca a l'air juste...c'est pour ça que je ne comprend pas d'où vient l'erreur :-(

Merci quand même
0
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
9 juin 2007 à 14:10
Salut,
tu devrais indenter ton texte correctement tu trouverait toi même le problème.
Apparement il manque une accolade après le premier for, tu coup ça décale tout et il y a une accolade ouvrante de moins que les accolades fermantes.
voilà ce que ça donne:

http://kysicurl.free.fr/ public void run() {
    try {
        synchronized(this){
            try {
                for ( int k = 0,plaque=0 ; k < 50; k++ , plaque++) System.out.println (  "Je crée un objet " + k );
                Voiture alpha = new Voiture(plaque);
                v.addElement(alpha);
                // g.addElement(alpha);
                System.out.println("taille du vecteur : "+v.size());
                System.out.println ("plaque = "+plaque);
             
            
                delay = (int)((Math.random())*20000);
                Thread.sleep ( delay ); 
                System.out.println("delay = "+delay);
                System.out.println("k = "+ k );
                System.out.println("t = "+ t);
            }
        }
        catch( InterruptedException e ) {
            System.out.println("Interrupted Exception caught");
        }
    }
    synchronized (this) {
        try {
            for (int j=0;j<v.size();j++) {                                 
                int delay2 = (int)((Math.random())*38000);
                Thread.sleep(delay2);
                v.removeElementAt(j);
            }
        }
        catch(InterruptedException e) {
                System.out.println("Interrupted Exception caught");
        }
    }
 
}   
catch(InterruptedException e) {
        System.out.println("Interrupted Exception caught");
}
}
0