Séparer une exception en deux

Séparer une exception en deux - Java - Programmation

Marsh Posté le 04-05-2006 à 17:15:36    

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
Reply

Marsh Posté le 04-05-2006 à 17:15:36   

Reply

Marsh Posté le 04-05-2006 à 17:19:10    

sfe.getMessage() ?

Reply

Marsh Posté le 04-05-2006 à 17:29:37    

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
Reply

Marsh Posté le 04-05-2006 à 17:31:05    

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
Reply

Marsh Posté le 04-05-2006 à 17:36:08    

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.
 

Reply

Marsh Posté le 04-05-2006 à 18:03:43    

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

Reply

Marsh Posté le 05-05-2006 à 08:38:07    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed