Traduire des messages issus d'exceptions

Traduire des messages issus d'exceptions - Java - Programmation

Marsh Posté le 22-09-2004 à 10:19:05    

Il semble y avoir un mecanisme de traduction des message d'exceptions, dans la méthode "getLocalizedMessage()" de "Throwable". Mais il n'y a nulle part de référence à une "Locale". Dans quel langage est censé "localiser" le message !?? Je n'comprend pas bien l'intéret de la chose.
Si quelqu'un à une idée...

Reply

Marsh Posté le 22-09-2004 à 10:19:05   

Reply

Marsh Posté le 22-09-2004 à 10:25:41    

nan, ce truc est une blague.
C'est sensé renvoyer le message dans la courante de la JVM, mais c'est à toi de faire le mécanisme de traduction. Et comme le message vient souvent de la chaine d'erreur de la fonction C soujacente (pour les IO du moins) ou directement du driver de BDD en JDBC c'est pas gagné pour filer un message d'erreur numéroté et localisé à l'utilisateur.
 
mais la question m'intéresse, je vais lire attentivement les réponses des autres.

Reply

Marsh Posté le 22-09-2004 à 10:33:14    

moi je dirais que le message d'une exception n'est pas sensé être présenté à l'utilisateur ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 22-09-2004 à 10:41:53    

tu proposes quoi comme lien entre l'exception et ce qu'on présente à l'utilisateur ? (sachant que sur une IO, on a aucune autre indication que le message de l'exception)

Reply

Marsh Posté le 22-09-2004 à 10:46:24    

Ben ouais. sur une IO par exemple, se contenter d'un message : "erreur d'entrée sortie", ça reste vague quand même.


Message édité par El_gringo le 22-09-2004 à 10:46:47
Reply

Marsh Posté le 22-09-2004 à 10:46:40    

d4rK 3Mpr0R a écrit :

tu proposes quoi comme lien entre l'exception et ce qu'on présente à l'utilisateur ? (sachant que sur une IO, on a aucune autre indication que le message de l'exception)


logiquement, l'utilisateur n'en a rien à battre de la raison technique de l'erreur. C'est plus une problématique développeur.
 
Donc faut essayer d'afficher à l'utilisateur le message d'erreur le plus précis possible, et dumper l'exception dans un fichier de log ou par mail ou un truc dans le genre, mais pas la présenter à l'utilisateur.
 
Dans la pratique, c'est bcp plus simple de faire un showDialog(e.getMessage()), mais bon ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 22-09-2004 à 10:48:29    

Donc t'es d'accord avec "d4rK 3Mpr0R" : le getLocalizedMessage, c'est une blague ?

Reply

Marsh Posté le 22-09-2004 à 11:06:32    

d4rK 3Mpr0R a écrit :

tu proposes quoi comme lien entre l'exception et ce qu'on présente à l'utilisateur ? (sachant que sur une IO, on a aucune autre indication que le message de l'exception)


 
là où je bossais avant, on "nestait" les exceptions dans d'autres exceptions, dont le message était la clé correspondant au message d'erreur dans le fichier de localisation.
 
Comme ça, avec un  

Code :
  1. langFileManager.getString(e.getMessage());


on avait le message à afficher,  
 
et avec un  

Code :
  1. e.getCause()


on avait l'exception d'origine, ce qui permettait de la présenter dans les interfaces d'admin/report d'erreurs.
 
Je sais pas si c'est la panacée, mais c'était assez pratique, quoique lourd par moment.


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
Reply

Marsh Posté le 22-09-2004 à 11:12:10    

gfive > je le note, et je m'en félicite. Merci.

Reply

Marsh Posté le 22-09-2004 à 11:14:00    

El_gringo a écrit :

Donc t'es d'accord avec "d4rK 3Mpr0R" : le getLocalizedMessage, c'est une blague ?


pas forcément, mais je vois ca comme étant plus destiné au développeur qu'à l'utilisateur.
 
gfive> sympa comme méthode. mais j'aurais plutot ajouté un attribut spécial pour le code d'erreur plutot que d'utiliser le message de l'exception


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 22-09-2004 à 11:14:00   

Reply

Marsh Posté le 22-09-2004 à 11:18:26    

benou a écrit :

logiquement, l'utilisateur n'en a rien à battre de la raison technique de l'erreur. C'est plus une problématique développeur.

catcher FileNotFoundException ou faire un file.exists(), là est la question [:petrus75]
 
 
(en plus tu te contredis, entre ce que tu préconisais - catcher l'exception - et ce que tu dis là :o)


Message édité par the real moins moins le 22-09-2004 à 11:22:58

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 22-09-2004 à 11:21:05    

d4rK 3Mpr0R a écrit :

gfive > je le note, et je m'en félicite. Merci.


 
Ce qui était chiant, par exemple, c'était, toujours dans le cas des IOExceptions, l'obligation d'énormément tester pour pouvoir sortir un message pertinent.
 
Dans le genre :  
 

Code :
  1. try {
  2.   File f = new File("path/a/la/con" );
  3.    //Lectures et écritures.
  4. } catch(IOException ioe) {
  5.    throw new NotreException(message, ioe);
  6. }


 
là, on peut rien donner comme info, on est obligé de faire  

Code :
  1. if (f.exists()) {
  2.    if (f.canRead()) {
  3.        if (f.canWrite()) {
  4.            //lectures/ecritures
  5.        } else {
  6.            throw new NotreException("Error.File.Unreadable", f.getName(), null);
  7.             # ici, le f.getName() est inclus dans la chaîn extraite du fichier de langue avec un StringFormatter
  8.        }
  9.    } else {
  10.        throw new NotreException("Error.File.Unwritable", f.getName(), null);
  11.    }
  12. } else {
  13.    throw new NotreException("Error.File.NoSuchFile", f.getName(), null);
  14. }


 
Donc, bon...Super lourd, quoi...On n'a utilisé ce genre de trucs que dans les interfaces pour les clients finaux, qui se doivent d'être nickel. Pour les interfaces d'admin, c'était généralement beaucoup plus simple.
 
[edit] : grillaid! :D


Message édité par gfive le 22-09-2004 à 11:22:08

---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
Reply

Marsh Posté le 22-09-2004 à 11:23:56    

the real moins moins a écrit :

catcher FileNotFoundException ou faire un file.exists(), là est la question [:petrus]
 


 
Tu m'a grilaid, et je réponds :  
 
Quand on doit fournir un message à un utilisateur final qui n'y connaît rien, mais qui peut remédier au problème en fonction du message => if file.exists().. et message pertinent.
 
Si il peut de toutes façons rien faire, lui répondre "amarche pôs", suffit.


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
Reply

Marsh Posté le 22-09-2004 à 11:24:56    

gfive> sympa comme méthode si le problème était fugitif [:mlc] (et non, j'ai rien à proposer à part que Sun remonte le code d'erreur UNIX et qu'on se démerde avec ça en mettant des wrappers par plateforme)

Reply

Marsh Posté le 22-09-2004 à 11:29:46    

d4rK 3Mpr0R a écrit :

gfive> sympa comme méthode si le problème était fugitif [:mlc] (et non, j'ai rien à proposer à part que Sun remonte le code d'erreur UNIX et qu'on se démerde avec ça en mettant des wrappers par plateforme)


 
bah, disons que en fait, on faisait ça pour nos propres exceptions : c'était toujours pour le chat Orange, et les exceptions étaient plutôt :  

Code :
  1. NoSuchUser
  2. Blacklisted
  3. NoSuchForum
  4. ....


 
donc, on maîtrisait complètement l'envoi des exceptions, et on faisait en sorte d'envoyer une exception par type d'erreur (comme s'il y avait un NoSuchFilException, FileUnreadableException...) Du coup, on avait pas souvent à faire ce gernre de trucs
 
Le coup du nesting nous permettait simplement de centraliser l'affichage des messages d'erreur, de simplifier les prototypes, et de permettre un héritage facilement, sans avoir à catcher Exception comme des bourrins.


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
Reply

Marsh Posté le 22-09-2004 à 11:49:55    

c'est un chat par SMS ?

Reply

Marsh Posté le 22-09-2004 à 11:51:51    

d4rK 3Mpr0R a écrit :

c'est un chat par SMS ?


 
SMS/Wap/Web (html et/ou applet)/MMS, et maintenant vocal.
Pkoi?


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
Reply

Marsh Posté le 22-09-2004 à 11:53:42    

the real moins moins a écrit :

(en plus tu te contredis, entre ce que tu préconisais - catcher l'exception - et ce que tu dis là :o)


je vois pas la contradiction ....


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 22-09-2004 à 11:55:55    

jfive > curiosité.

Reply

Marsh Posté le 22-09-2004 à 11:59:05    

d4rK 3Mpr0R a écrit :

jfive > curiosité.


 
Complètement hors sujet, je te déconseille de t'y inscrire, si tu veux pas te faire bombarder de teasings à la con!! :D
 


---------------
Tous les sud africains sont ségrégationistes, à part Ted. (P. Desproges)
Reply

Sujets relatifs:

Leave a Replay

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