Remontée d'erreurs par les méthodes JAVA

Résolu
Signaler
Messages postés
24
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
22 février 2006
-
Messages postés
24
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
22 février 2006
-
Bonjour à tous...
j'aimerai savoir quelle est la meilleur méthode à utiliser pour remontée des erreurs avec les méthodes java que je code.

J'ai une méthode java qui a accepte plusieurs paramètres en argument qui vont ensuite me permettre de construire une trame pour un protocole de communication, mais j'aimerai pouvoir signaler (et même avertir) qu'un paramètre passé est faux.
Jusqu'à présent j'utilisais le mécanisme des exceptions mais je ne suis pas sur que ce soit approprié...

Gwillherm

7 réponses

Messages postés
750
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 décembre 2008
20
Non les exceptions servent à indiquer les erreurs internes (mauvaises programmations) commer les erreurs externes (fichier introuvable). De ce fait, si tu veux faire une exeption indiquant qu'un de tes arguments est faux, tu peux faire :
if(error){throw new IllegalArgumentException(); }

voilà

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
Messages postés
750
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 décembre 2008
20
En fait, ce qu'il a voulu dire, c'est que tu crées une exception particuliére avec un message personnalisé, du style :


public void MaDivision(int a, int b) {
if(a<0) {
throw new MauvaisArgumentMaDivision("Premier argument faux");
}
...
}

Voilà, mais ta méthode de renvoyer un code d'erreur est tout aussi valable

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
Messages postés
764
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
8 mars 2011
8
a mon avis c est tout a fait approprié, les exception servent justement a ca
Messages postés
24
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
22 février 2006

OK, mais en fait je pensais que les exceptions servaient à remonter des erreurs plus graves...
j'ai bien fouillé toutes des docs java que j'avais et je voulais confirmer ce que je croyais avoir compri :)

Merci de ta réponse rapide
Messages postés
764
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
8 mars 2011
8
je me permet de rajouter également que
tu peux créer tes propres erreures et les attraper a la sortie de ta méthode comme ca tu peux faire le traitement approprié
et les erreures plus graves t es pas obligé de les attraper comme ca ton appli pourra crasher pour de vraies raisons ;)
Messages postés
24
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
22 février 2006

"tu peux créer tes propres erreures et les attraper a la sortie de ta méthode comme ca tu peux faire le traitement approprié" ->
quand tu dis cela, veux tu entendre par la que je retourne un code d'erreur en sortie de ma méthode ???

C'est ce que j'avais utilisé comme technique au départ :

si erreur sur argument_1 alors retourne valeur 127 (par exemple),
si erreur sur argument_2 alors retourne valeur 126... etc....

mais après étude de la doc java j'ai cru comprendre que ce système là appartenais plus au C++ qu'au JAVA....

Merci de vos réponses
Messages postés
24
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
22 février 2006

Merci pour toutes ces info qui levent un flou "artistique" sur ma compréhension des remontées d'erreurs en JAVA
Voici ce que ça donne en utilisant la méthodes des Exceptions :

public static byte[] readDiscretInputs(int st_add, int nb_inputs)throws ModbusException{

/* variables declaration */
byte[] tramePDU = new byte[5];

/* test of the parameters and filling of the array tramePDU */
if ((st_add < MIN_ADDRESS)||(st_add > MAX_ADDRESS)){

/* st_add parameter error */
throw new ModbusException("No valid address !");

}
else if ((nb_inputs < MIN_INPUTS)||(nb_inputs > MAX_INPUTS)){

/* nb_inputs parameter error */
throw new ModbusException("No valid number of inputs !");
}
else{

/* variables declaration */
short intermediateValue;

/* filling of the array tramePDU */
tramePDU[0] = READ_DISCRET_INPUTS; //function code
intermediateValue = (short)st_add;
intermediateValue >>= 8;
tramePDU[1] = (byte)(intermediateValue & MASK);
tramePDU[2] = (byte)(st_add & MASK);
intermediateValue = (short)nb_inputs;
intermediateValue >>= 8;
tramePDU[3] = (byte)(intermediateValue & MASK);
tramePDU[4] = (byte)(nb_inputs & MASK);

}

return tramePDU;
}

Gwillherm