Exception

joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007 - 26 mai 2006 à 01:24
joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007 - 26 mai 2006 à 15:55
Salut,


Je voudrais savoir si lors des traitements d'exceptions, il est possible de mettre dans le bloc catch ( MonException e )

du code de traitement et non un System.Out.println(" Erreur survenue !").


Tous les exemples que j'ai pu trouver utilisent uniquement un
System.out dans leurs catch puis je faire un appel d'une méthode
quelconque ?


Merci à vous !


Jod

5 réponses

cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 3
26 mai 2006 à 02:15
Oui,tu peux y faire ce que tu veux.

Good Luck.

Bouba
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
26 mai 2006 à 09:03
C'est pas parce que tout ce que tu a vu fait un simple system.out.println que c'est bien de faire comme cà, bien au contraire !

Dans un bloc catch, tu es censé résoudre le problème, ou du moins, éviter que celui-ci provoque des incohérences dans ton programme, du style : si tu n'arrive pas à télécharger tel ou tel fichier, faire en sorte que ton programme fasse sans ce fichier, ou si ce n'est pas possible, avertir l'utilisateur (d'où le system.out.println, mais qui devrait être fait que dans le pire des cas !).

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
0
joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007
26 mai 2006 à 14:31
Merci de votre réponse, mais en fait, voilà véritablement le problème.
J'envoi un message au serveur et le serveur envoit à tous les clients y compris le client qui envoit, ce même message.
La récupération de ce message se fait dans le "try" ci dessous.
Mais lorsque j'utilise mon application parfois à des moments imprévisibles j'obtiens une erreur :

java.io.OptionalDataException
 at java.io.ObjectInputStream.readObject0(Unknown Source)
 at java.io.ObjectInputStream.readObject(Unknown Source)
 at client.reception_serveur.recuperation_donnee(reception_serveur.java:46)
 at client.mon_programme.run(programme.java:584)
 at java.lang.Thread.run(Unknown Source) 

et le programme boucle à l'infini avec tache = null, le programme ne rentrant plus dans le "try" pr récupérer une donnée.
J'ai essayé de mettre dans le "catch" un envoi au serveur d'un message permettant de stopper l'application chez tous les clients pour que le programme puisse repartir dans le "try" au coup d'après mais sans succès...

Etant débutant dans le traitement des exceptions avez vous une idée sur comment forcer le programme à repartir dans le "try" pour récupérer les données du serveur?

while (true)
{   
      String tache = null;

 try
    {
        tache= (String) new reception_serveur(entree).recuperation_donnee();
    }
    catch (IOException e)
    {
        e.printStackTrace();
        System.out.println( "ERREUR1 : " + e.getMessage());
    }
    catch (ClassNotFoundException e)
    {
        e.printStackTrace();
        System.out.println( "ERREUR2 : " + e.getMessage());
    }

   if( tache.equals("toto" ) )
   {     
        //traitement 
   }

}

Merci d'avance !

Jo
0
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 3
26 mai 2006 à 15:27
Slt, que fait la ligne:
tache= (String) new reception_serveur(entree).recuperation_donnee();
Tu peux nous passer le code ? Es-tu sûr que cette fonction ne renvoi pas null à chaque fois ? Ce n'est pas possible que tu ne rentres plus dans le try !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
joduak Messages postés 194 Date d'inscription lundi 11 juillet 2005 Statut Membre Dernière intervention 13 avril 2007
26 mai 2006 à 15:55
La variable "entree" est un ObjectInputStream c'est la liaison de reception des données du serveur au client.

La ligne tache= (String) new reception_serveur(entree).recuperation_donnee();
permet de récupérer un objet qu'envoit le serveur et que le client doit exécuter.

Le constructeur est definit comme suit :

    public reception_serveur(ObjectInputStream entree)
    {
        try
        {
            this.entree = entree;
        }
        catch(Exception e)
        {
         System.out.println("Erreur au constructeur de thread_recepteur "+e.toString());
        }
    }

et la méthode comme cela :

    public Object recuperation_donnee() throws IOException, ClassNotFoundException
    {
     
        // donnee_serveur est un object
        donnee_serveur = entree.readObject(); 
        return donnee_serveur;
    } 
0
Rejoignez-nous