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

AWT/Swing Java Discussion :

[EXCEPTIONS] Action Performed


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Par défaut [EXCEPTIONS] Action Performed
    Voila, dans mon action performed, au coeur d'un de mes (if e.getSource()==truc), je fais une vérification du contenu d'une saisie de nombre. Si la string contient des caractères, j'attrape une NumberFormatException. Et si la string contient bien un nombre mais qu'il est hors des limites autorisées par le programme, je voudrais lancer une LargeurInvalideException. Problème, Eclipse me dit alors :
    " Exception LargeurInvalideException is not compatible with throws clause in ActionListener.actionPerformed(ActionEvent)"
    Comment faire?
    Autre question : comment détourner Eclipse pour que au lieu de capter la NumberFormatException, il capte la SaisieInvalideException que j'ai définie?
    Voici les codes :
    - des exceptions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /**
    * Définition d'une classe interne pour gérer les exceptions lorsque que l'on saisit
    * une largeur inférieure à 2 ou supérieure à 15
    */
    class LargeurInvalideException extends Exception{}
     
    /**
    * Définition d'une classe interne pour gérer les exceptions lorsque que l'on saisit
    * une largeur invalide (caractères non numériques)
     */
    class SaisieInvalideException extends Exception{}
    - le code du action performed :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    public void actionPerformed(ActionEvent e)  throws LargeurInvalideException
    	Object o = e.getSource();
    	/*bla bla bla*/
    	if(o==okgral){				
    		try{
    			boolean saisiecorrecte=false;
    			String reponse = txttaillegrille.getText();
    			if(Integer.parseInt(reponse)<2 || Integer.parseInt(reponse)>15){
    				JOptionPane.showMessageDialog(this, "La largeur que vous avez saisie est invalide, veuillez entrer une largeur comprise entre 2 et 15",
    				"avertissement",JOptionPane.WARNING_MESSAGE);
    				txttaillegrille.setText("");
    				fgrilleal.setAlwaysOnTop(true);
    			}
    			else {
    				saisiecorrecte=true;
    			}	
     
    			if(saisiecorrecte){
    				/*bla bla*/
    			}
     
    		} catch (NumberFormatException NFE)
    			{
    				JOptionPane.showMessageDialog(this, "Vous avez saisi des caractères non numériques. \nVeuillez effectuer une nouvelle saisie.",
    				"Avertissement : saisie invalide", JOptionPane.WARNING_MESSAGE);
    				txttaillegrille.setText("");
    				fgrilleal.setAlwaysOnTop(true);
    				}
    			}

  2. #2
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    pour la première question , je suis pas sur de la réponse mais je pense qu'étant donnée que tu redéfinis la méthode actionPerformed(ActionEvent e) qui à l'origine je crois qu'elle ne renvoie aucune exception .

    pour la deuxième question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(Integer.parseInt(reponse)<2 || Integer.parseInt(reponse)>15){
    				JOptionPane.showMessageDialog(this, "La largeur que vous avez saisie est invalide, veuillez entrer une largeur comprise entre 2 et 15",
    				"avertissement",JOptionPane.WARNING_MESSAGE);
    				txttaillegrille.setText("");
    				fgrilleal.setAlwaysOnTop(true);
    throw new SaisieInvalideException();
    mais je pense que le problème de la première erreur va persister .

  3. #3
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Oui, tu ne peux pas relancer des exceptions utilisateur qui ne sont pas prévues par le modèle de l'interface (ici, donc, l'actionPerformed).

    Deux solutions :
    • Transformer ton exception utilisateur en RuntimeException (en général, c'est mauvais).
    • Traiter toutes les exceptions dans le bloc de l'actionPerformed (en général, c'est bon).

Discussions similaires

  1. Exception action pour un formulaire de saisie.
    Par Kirite dans le forum XMLRAD
    Réponses: 4
    Dernier message: 25/06/2009, 16h01
  2. Exceptions et performances
    Par sbrisard dans le forum Langage
    Réponses: 3
    Dernier message: 14/02/2009, 21h38
  3. Exceptions et performance
    Par strikerm59 dans le forum SQL
    Réponses: 4
    Dernier message: 14/11/2007, 11h15
  4. Action performed et if
    Par Katachana dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 06/11/2007, 15h19
  5. [SWING] action Performed
    Par Soupape dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 02/05/2007, 17h44

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