joduak
Messages postés194Date d'inscriptionlundi 11 juillet 2005StatutMembreDernière intervention13 avril 2007
-
26 mai 2006 à 01:24
joduak
Messages postés194Date d'inscriptionlundi 11 juillet 2005StatutMembreDernière intervention13 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 ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 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 !).
joduak
Messages postés194Date d'inscriptionlundi 11 juillet 2005StatutMembreDernière intervention13 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?
cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 20073 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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
joduak
Messages postés194Date d'inscriptionlundi 11 juillet 2005StatutMembreDernière intervention13 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;
}