Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2640 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Séparer une exception en deux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Séparer une exception en deux

n°1359848
mayalu
Posté le 04-05-2006 à 17:15:36  profilanswer
 

Bonjour,
 
voici mon code :

Code :
  1. public void send(MonMessage monMessage) throws ConnectException, MessagingException {
  2.         //
  3.         // configuration du serveur de mail
  4.         //
  5.         System.out.println("création du mail" );
  6.         Properties props = new Properties();
  7.         props.put("mail.smtp.host", host);
  8.         Session s = Session.getInstance(props, null);
  9.         InternetAddress from;
  10.         InternetAddress to;
  11.         //
  12.         // création des adresses de l'expéditeur et du destinataire
  13.         //           
  14.         from = new InternetAddress(senderMail);
  15.         to = new InternetAddress("xxxx@laposte.net" );
  16.         //
  17.         // création du message
  18.         //
  19.         System.out.println("entree du message" );
  20.         MimeMessage message = new MimeMessage(s);
  21.         message.setFrom(from);
  22.         message.addRecipient(Message.RecipientType.TO, to);
  23.         message.setSubject(monMessage.getSubject());
  24.         String mailBody = monMessage.getMsg();
  25.         message.setText(mailBody);
  26.         //
  27.         // envoi du mail , les exceptions sont propagées
  28.         //  
  29.             Transport.send(message);
  30.     }


 
Cette fonction est appellée dans une autre classe ou je traite les exceptions.

Code :
  1. try {
  2.                         maClasse.send(monMessage);
  3.       } catch (ConnectException ce) {
  4.                         System.out.println("envoi impossible" );
  5.       } catch (AddressException ae) {
  6.                         // adresse destinataire ou sender malforme
  7.                         System.out.println("Invalid recipient mail (address = " + monMessage.getRecipientRef() + " )" );
  8.       }  catch (SendFailedException sfe) {
  9.                         // destinataire ou sender incorrect
  10.                         // unknown SMTP host
  11.                         System.out.println("Invalid mail address : " + sfe.getInvalidAddresses()[0] );
  12.      } catch (MessagingException me) {
  13.                         System.out.println("Mail cannot be send " + me.getMessage());
  14.      }


Mon problème c'est que j'intercepte l'exception SendFailedException pour 2 types d'erreurs :
- si le serveur SMTP ne répond pas
- si l'adresse du destinataire n'est pas bonne
 
Donc je voudrais pouvoir afficher des messages appropriés dans chaque cas d'erreur, comment puis je faire ?
 
Je m'y suis peut être mal prise, dites le moi  :)  
 
Merci par avance


Message édité par mayalu le 04-05-2006 à 17:26:09
mood
Publicité
Posté le 04-05-2006 à 17:15:36  profilanswer
 

n°1359852
boulax
Inserer phrase hype en anglais
Posté le 04-05-2006 à 17:19:10  profilanswer
 

sfe.getMessage() ?

n°1359862
mayalu
Posté le 04-05-2006 à 17:29:37  profilanswer
 

oui mais si je veux afficher un message a moi, est ce que je ne peux pas savoir quelle exception j'intercepte pour pouvoir mettre le message que je veux ?
 
Par exemple si la connection au serveur SMTP ne peut pas faire, sfe.getMessage() donne ça :
 
Sending failed;
  nested exception is:
 class javax.mail.MessagingException: Could not connect to SMTP host: mail.xxx.fr, port: 25;
  nested exception is:
 java.net.NoRouteToHostException: No route to host: connect ]
 
 
Je trouve que c'est un peu long et compliqué, non ?
 
Edit : Mais surtout ce que j'ai oublié de dire, c'est que les traitements suite à ses erreurs sont différents.
En effet, si c'est une erreur du serveur de mail, alors on essaie d'envoyer le message tant que sa date de validité est bonne, une fois dépassée on supprime le message.
si c'est une erreur dans l'adresse mail, on supprime le message.

Message cité 1 fois
Message édité par mayalu le 04-05-2006 à 17:34:38
n°1359864
mayalu
Posté le 04-05-2006 à 17:31:05  profilanswer
 

euh tant que j'y suis  :ange:  
 
ça veut dire quoi exactement nested exception ?
 
merci  :)


Message édité par mayalu le 04-05-2006 à 17:31:42
n°1359871
boulax
Inserer phrase hype en anglais
Posté le 04-05-2006 à 17:36:08  profilanswer
 

mayalu a écrit :

oui mais si je veux afficher un message a moi, est ce que je ne peux pas savoir quelle exception j'intercepte pour pouvoir mettre le message que je veux ?


Le probleme c'est que le meme type d'exception reflete deux erreurs (ou plus je sais pas en fait) donc pour les messages perso tu peux pas te baser sur le type d'exception pour différencier ton message (ce que ferait de toute facon le try catch). Regarde si y'a des champs ou des méthodes particulieres dans cette exception qui pourraient te permettre de distinguer les cas. Sinon, les nested exception ce sont les exceptions "d'origines", et elle pourraient te permettre de différencier les erreurs.
 

n°1359902
souk
Tourist
Posté le 04-05-2006 à 18:03:43  profilanswer
 

getCause()? et en fonction de ca tu peux faire des traitements separes ?

n°1360158
mayalu
Posté le 05-05-2006 à 08:38:07  profilanswer
 

Je ne connais pas getCause() je vais regarder, merci :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Séparer une exception en deux

 

Sujets relatifs
[PHP ] Séparer un tableausous excel séparer les éléments d'une cellule selon un "/"
ma servlet ne catch pas une exception lancée par mon EJBjndi exception
[Borland C++} gestion des exception en graphique - GrrrApplication JAVA retourne une FATAL EXCEPTION
[Delphi / Exception] création de type d'exception particulierComment raisé une exception mais en affichant malgré tout le SQLERRM ?
[BASH] Contenu d'un chaîne séparer par ";" (CSV)Probleme d'exception pour lecture fichier
Plus de sujets relatifs à : Séparer une exception en deux


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR