Traduire des messages issus d'exceptions - Java - Programmation
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.
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 ...
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)
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.
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 ...
Marsh Posté le 22-09-2004 à 10:48:29
Donc t'es d'accord avec "d4rK 3Mpr0R" : le getLocalizedMessage, c'est une blague ?
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 :
|
on avait le message à afficher,
et avec un
Code :
|
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.
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
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
(en plus tu te contredis, entre ce que tu préconisais - catcher l'exception - et ce que tu dis là )
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 :
|
là, on peut rien donner comme info, on est obligé de faire
Code :
|
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!
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 |
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.
Marsh Posté le 22-09-2004 à 11:24:56
gfive> sympa comme méthode si le problème était fugitif (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)
Marsh Posté le 22-09-2004 à 11:29:46
d4rK 3Mpr0R a écrit : gfive> sympa comme méthode si le problème était fugitif |
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 :
|
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.
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?
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à |
je vois pas la contradiction ....
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!!
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...