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

Langage Java Discussion :

[debutant]gestion des messages des exceptions


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 82
    Points : 55
    Points
    55
    Par défaut [debutant]gestion des messages des exceptions
    Voila mon problème d'une manière générale:

    J'ai une fonction qui prends plusieurs paramètres et qui fait des controles de cohérences entre ses paramètres. Des qu'une erreur est trouvée, je renvoi une exception avec un message explicite. J'appelle plusieurs fois cette méthode avec des valeurs différentes qui correspondent aux valeurs que l'utilisateur à saisie dans un formulaire.
    Mon problème c'est que dnas le message de mes exceptions (qui est renvoyé à l'ihm et affiché) je n'ai pas le nom du champ ou du couple de champs qui sont en erreur, ce qui n'est pas pratique pour l'utilisateur pour corriger son formulaire.

    D'où ma question, quel est le meilleur moyen pour ajouter le nom du ou des champs en erreur:
    - est ce que je dois passer en paramètre de ma méthode le nom des champs pour pouvoir les ajouter à mes messages d'erreurs.
    - ou plutot catcher les différentes exceptions à chaque appel de ma méthode et ajouter les champs en erreur en fonction du libellé de l'erreur.
    - ou une autre solution....
    Sachant que j'ai ce genre de pb assez souvent j'aimerai une solution efficace et rapide à mettre en place.

    Merci pour vos conseils
    Tout probleme a une solution.

  2. #2
    Membre habitué Avatar de White Rabbit
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 122
    Points : 148
    Points
    148
    Par défaut
    Peux-tu donner des exemples s'il te plait ?

  3. #3
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 82
    Points : 55
    Points
    55
    Par défaut
    Voila le formulaire:




    On voit qu'il y a 6 blocs distincts dans le formulaire, pour chaque bloc j'appelle la fonction suivante. Je voudrais donc afficher un message precis d'erreur, sur quel bloc se situe l'erreur.



    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
     
    	public boolean verifyThreshold(Double theAmount, Integer theVariationCode, String theSign, Double theVarationAmount, Integer theApplicationCode, InterestRate theRate)throws DDAConditionPropertiesException {
    		boolean retour = true;
    		//the threshold is not set
    		if(theAmount==null && theVariationCode == null && (theSign==null || theSign.equals(BLANK)) && theVarationAmount==null && theApplicationCode==null)
    			retour = false;
    		else{ 
    			if(theAmount!=null && theVariationCode != null && theSign!=null && theVarationAmount!=null && theApplicationCode!=null){
    				//all the information are set, we test is the information si correct
    				verifyApplicationCode(theApplicationCode);
    				if(theRate==null && !theVariationCode.equals(FIXED))
    					throw new DDAConditionPropertiesException("INTEREST_RATE_CODE_VAR_ERROR");
    				verifyVariationCode(theVariationCode);
    				theSign = calculateSign(theSign,theVariationCode);
    				verifyMinimumAmount(theVariationCode,theSign,theVarationAmount,theRate);
    			}else //at least one information is null
    				throw new DDAConditionPropertiesException("THRESHOLD_INFORMATION_NULL",new Object[]{theAmount, theVariationCode, theSign, theVarationAmount, theApplicationCode});
    		}
    		return retour;
    	}
    En plus les methodes appellées dans cette fonction renvoie aussi des exceptions de type DDAConditionPropertiesException avec leur propre message.

    Voila comment j'appelle cette fonction:
    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
     
    		//Threshold debit 1
    		if(verifyThreshold(theCondition.getAmntdeb1(),theCondition.getCodevarideb1(),theCondition.getSignvarideb1(),theCondition.getAmntvarideb1(),theCondition.getCodeappldeb1(),baseDebitRate)){
    			thresholdUse = true;
    			numberOfThreshold++;
    		}
    		//Threshold debit 2
    		if(verifyThreshold(theCondition.getAmntdeb2(),theCondition.getCodevarideb2(),theCondition.getSignvarideb2(),theCondition.getAmntvarideb2(),theCondition.getCodeappldeb2(),baseDebitRate)){
    			if(!thresholdUse)
    				throw new DDAConditionPropertiesException("THRESHOLD_USAGE_ERROR",new Object[]{"debit"});
    			numberOfThreshold++;
    		}
     
     
    		//Threshold credit 1
    		if(verifyThreshold(theCondition.getAmntcre1(),theCondition.getCodevaricre1(),theCondition.getSignvaricre1(),theCondition.getAmntvaricre1(),theCondition.getCodeapplcre1(),baseCreditRate)){
    			thresholdUse = true;
    			numberOfThreshold++;
    		}
    		//Threshold credit 2
    		if(verifyThreshold(theCondition.getAmntcre2(),theCondition.getCodevaricre2(),theCondition.getSignvaricre2(),theCondition.getAmntvaricre2(),theCondition.getCodeapplcre2(),baseCreditRate)){
    			if(!thresholdUse)
    				throw new DDAConditionPropertiesException("THRESHOLD_USAGE_ERROR",new Object[]{"credit"});
    			numberOfThreshold++;
    		}
    Tout probleme a une solution.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Août 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 32
    Points : 32
    Points
    32
    Par défaut
    A chacun son boulot...
    Les méthodes de verif de plus bas niveau (verifyMinimumAmount, ...) lève une exception en cas d'erreur
    La méthode qui l'appelle la catch et ajoute les infos à son niveau = champ.
    La méthode qui fait les appels au niveau d'un bloc catch l'exception et ajoute l'identifiant du bloc.
    => Possibilité d'utiliser le chainage des exceptions.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 82
    Points : 55
    Points
    55
    Par défaut
    Je crois que je vais etre obligé de faire ca alors, ca m'arrange pas mais j'ai pas le choix.

    Merci pour les infos
    Tout probleme a une solution.

Discussions similaires

  1. Réponses: 20
    Dernier message: 30/08/2012, 11h35
  2. Langue des messages d'exception
    Par melleb dans le forum C#
    Réponses: 8
    Dernier message: 06/07/2007, 12h21
  3. [Debutant][Un peu perdue] Des tableaux, des feuilles..
    Par coco21 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/07/2007, 08h38
  4. Gestion des majuscules des miniscules des accent
    Par issam16 dans le forum Access
    Réponses: 2
    Dernier message: 13/07/2006, 14h21

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