Salut à tous,
Dans le cadre de développement d'une application en Java, j'ai un problème dans la façon de concevoir et gérer mes erreurs ou retours de fonctions.
Voici mon contexte actuel :
à partir d'un fichier CSV en entrée je test chaque champ de celui-ci et s'il y a une "erreur" de format je voudrais le retourner à l'utilisateur de manière assez précise.
Je ne souhaite pas uniquement dire qu'un champ est invalide mais je voudrais également retourner la raison de cette invalidité.
Ainsi lorsque j'ai la valeur suivante : "32/01/2020"
pour un champ de type : Date
J'aimerais donc dire que :
- le champ est invalide
- que la dénomination des jours est erroné car supérieur à 31
Voici mes différentes reflexions
---------------------------
j'ai créé des méthodes du style "isDateColumn" que retourne TRUE si tout va bien sinon elle lève une exception qui détail l'erreur. Ainsi si le format du champ n'est pas correct je lève une "erreur". J'ai donc ma réponse ainsi que un message que je peux gérer mais avec cette technique :
- je considère qu'un mauvais format est une erreur alors que finalement non. C'est juste une indication concernant une question que j'ai posé. Ce n'est pas techniquement parlant une erreur.
- lorsque j'ai besoin de savoir si le champ N'EST PAS de type date cela ne me retourne pas une réponse (FALSE) mais une erreur. Ce qui n'est pas très pratique car je dois dans ce cas faire un try/catch et considérer que si je tombe dans le catch c'est que ma réponse est négative
---------------------------
Je pourrais créer des methodes qui renvoi un Array contenant 2 clés. L'une pour la réponse de validité (TRUE/FALSE) et l'autre pour un éventuel message d'erreur.
Mais avec cette technique :
- je ne suis pas sûr que cette methode soit très répandu et courante.
- cela peut être un peu lourd de gérer constamment un array en retour.
---------------------------
Une solution intéressante serait éventuellement de créé une class ValidationFile. Avec cette technique :
- je peux créer une methode isValid qui renvoi bien juste un boolean MAIS qui créé en interne dans des champ de la classe les éventuelles erreurs detectés
- je peux créer une methode qui pourra être appeler si la 1e (isValid) retourne FALSE, qui renvoi les erreurs créé et stocker dans des champ et rempli par la 1e methode
Ma problématique ne consiste pas à résoudre basiquement ce soucis mais de trouver une solution/philosophie technique que je puisse réutiliser et qui soit à la fois efficace et standard. Ainsi comment les autres librairies fonctionne t-elle à ce niveau ?
Qu'en pensez-vous ? Comment gérer efficacement des messages de traitement qui ne sont pas spécialement des erreurs ?
Merci de vos éclairages !
Partager