IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Documents Java Discussion :

[debutant] Try catch lors de la création d'un Maskformatter


Sujet :

Documents Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 209
    Par défaut [debutant] Try catch lors de la création d'un Maskformatter
    Bonjour
    j'ai crée un MaskFormatter et j'ai remarqué que pour cela fonctionne il faut placer l'opérateur new dans un bloc try catch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     try {
        formatter = new MaskFormatter(#####);
      } catch (java.text.ParseException exc) {
            System.err.println("formatteur est mauvais: " + exc.getMessage());
            System.exit(-1);
      }
    quelque soit les caractères placés en argument dans le constructeur je n'arrive jamais a passer dans le catch Pourquoi mettre alors un bloc try catch ?

    Merci de bien vouloir m'expliquer

  2. #2
    Membre éclairé
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Par défaut
    Toujours jeter un oeil dans l'API-doc quand c'est comme ça: http://java.sun.com/j2se/1.5.0/docs/...va.lang.String)

    Grâce à cette doc, tu n'as pas besoin de "deviner" que le constructeur est susceptible de lancer une exception: c'est écrit dessus. Après pour savoir dans quel cas l'exceptions est lancée, c'est pareil: "si le masque ne contient pas de caractères de masque valides". La liste des caractères valides est donnée dans la doc de la classe un peu plus haut.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 209
    Par défaut
    pour répondre a Sébastien ARBOGAST j'ai bien lu la doc de sun mais la liste des caractères valides n'a aucune effets vous pouvez mettre dans le masque n'importe quoi et le catch n'est jamais utilisé

    par exemple vous pouvez faire formatter = new MaskFormatter(#+=@####) sans pour cela lever une exception
    c'etait le but de ma question
    merci d'y répondre faites vous même le test

  4. #4
    Membre éclairé
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Par défaut
    La doc dit bien que l'exception est lancée si le masque NE CONTIENT PAS de caractères corrects. Or votre masque contient au moins un # qui est un caractère de masque correct. Donc normal. Essayez un masque avec uniquement des caractères qui ne sont pas dans la liste pour voir...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 209
    Par défaut
    Bonjour
    je viens de faire le test suivant formatter = new MaskFormatter("@@@@") et je n'est toujours pas d'exception de levée
    idem avec formatter = new MaskFormatter("+=@&") c'est a n'y rien comprendre
    merci de vous occuper de ce Pb

  6. #6
    Membre éclairé
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Par défaut
    Quelle version du JDK utilisez-vous? 1.4 ou 5.0?
    Parce que d'après les sources du JDK, il y a eu pas mal de changements entre ces deux versions et effectivement dans la 1.4 il ne semble pas y avoir de code qui jette une ParseException. Celà dit dans la 5.0, cette exception semble pouvoir être lancée. A essayer avec un JDK 5.0.

  7. #7
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Salut,

    A mon avis (rien n'est certain) :
    C'est normal qu'il ne lève pas d'exception, étant donné que "+=@&" est valide ! En effet, il y a les caractères spéciaux correspondant à des listes bien définies (comme '#' correspond aux nombres), et les autres, c'est à dire, tous je crois. Si tu ne mets que des "autres", le JTextField sera tout simplement non éditable et affichera "+=@&". C'est comme "##:##" qui affiche un horaire, par exemple, mais ne lève pas d'exception pour autant à cause du ':' !

    Alors, si on admet que ma théorie est exacte, je ne vois pas comment une exception peut être levée... Peut-être bien avec le JDK 1.5 comme disait rozwel, mais de quelle manière ? ...

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 209
    Par défaut
    Rebonjour
    je viens de faire l'essai avec un jre 1.5.0_08 et c'est toujours pareil
    jamais d'exception et comme le dit BlackWood le JFormattedTextField sera tout simplement non éditable c'est quand même bizarre que sun a placé a cet endroit une éventuelle exception mais que l'on ne peut pas la reproduire
    Encore un mystère de l'informatique !!!

  9. #9
    Membre éclairé
    Avatar de rozwel
    Inscrit en
    Mars 2002
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 324
    Par défaut
    Bizarre mais en même temps pas trop grave. Il te suffit de catcher avec un bloc vide ou un message de débuggage, ou même un 'assert false' juste au cas où.

    Pour ce qui est de l'explication, des fois ça peut être pour des raisons historiques (ce n'est pas le cas ici puisque la classe est apparue en 1.4 et ne lançait déjà pas d'exception), des fois c'est aussi une divergence entre les gars qui conçoivent l'API et ceux qui l'implémentent. A voir après si ce bug n'a pas déjà été reporté dans leur bug database, et sinon, créer un rapport

  10. #10
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Re

    Je viens de tenter pas mal de choses pour essayer de lever cette exception et... rien. A croire que Sun voulait coder "trop" proprement ou tout simplement pour le fun ! Ce n'est pas vraiment un bug mais une mesure de sécurité obsolète, je dirais. Bref, ça sert à rien. De toute façon, la configuration d'un MaskFormatter est exclusivement réservée au programmeur, sauf cas vraiment exceptionnel (et encore), donc aucun problème.

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 209
    Par défaut
    Merci de vos réponse c'était seulement pour faire avancer le smilblick!!!
    Car je suis entrain de décortiquer l'exemple de sun "TextInputDemo.java" afin de comprendre l'utilisation des champs de saisie JFormattedTextField car je suis un utilisateur débutant de java et j'aime bien comprendre les choses avant d'aller plus loin.Bon je vais donc me dire il faut utiliser le bloc try catch ( indispensable)
    pour une compilation mais cela ne sert a rien....
    Merci encore et au prochain PB
    A+

  12. #12
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    C'est une qualité de vouloir comprendre !
    Ta question m'a bien tarodé, d'autant plus que j'utilisais depuis longtemps le MaskFormatter, et sans me rendre compte de l'inutilité du try/catch...
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Debutant] Try-Catch général
    Par cs_ntd dans le forum Débuter
    Réponses: 6
    Dernier message: 28/09/2009, 02h26
  2. Try Catch lors d'un stop [Pratiques]
    Par Jimalexp dans le forum Général Java
    Réponses: 2
    Dernier message: 16/02/2009, 21h50
  3. Réponses: 3
    Dernier message: 13/12/2006, 16h01
  4. [DEBUTANT] Try catch
    Par flzox dans le forum Langage
    Réponses: 4
    Dernier message: 24/01/2006, 00h47
  5. [debutant sous eclipse] surround with try catch
    Par Alwin dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 26/06/2004, 20h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo