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

Langages de programmation Discussion :

Validation des données et notification d'erreurs


Sujet :

Langages de programmation

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Points : 49
    Points
    49
    Par défaut Validation des données et notification d'erreurs
    Bonjour,

    je me pose une question concernant la validation des données et le traitement des erreurs.

    Si j'ai une fonction qui valide les données entrantes et doit retourner une erreur dans le cas de données incorrectes, dans quels cas la fonction devrait lancer une erreur (ex.: throw new Exception("..."); ) et dans quels cas la fonction devrait seulement retourner un numéro d'erreur (ex.: return [#erreur]) devant être vérifié par l'appelant ?

    Chaque pratique comporte ses avantages et ses inconvénients, lancer une erreur risque de faire crasher le programme si celle-ci n'est pas trappée correctement mais d'un autre côté ça nous assure que l'appelant ne pourra pas ignorer l'erreur...

    Quelle est la meilleur pratique à utiliser selon vous ?

  2. #2
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    C'est une philosophie et une histoire de pratique plus qu'autre chose à mon sens... Mais je peux me tromper ^^
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    en complément à ce qui a été dis : dans le premier cas (throws new Exception) cela nous conduit à une conception oo obligatoirement tandis que le second cas non(retour de code erreur)
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Utiliser les exceptions demande d'être rigoureux sur leur utilisation (par exemple, un traitement pouvant en lancer doit indiquer lesquelles et dans quel cas).
    Il est préférable de te faire une classe d'exception de base (si l'appelant ne souhaite juste savoir si ça a fonctionné ou pas) et la dériver en des exceptions spécifiques (si l'appelant peut traiter au cas par cas les soucis).

    Ce que je fais, c'est que j'applique le pattern Composite, où une exception peut être conteneur d'une éventuelle exception d'origine du genre CEchecTraitementXException encapsule CDivideByZeroException.
    Ensuite, je fais un try/catch dans ma fonction principale histoire que si personne n'a rattrapé une exception, ça puisse générer un petit rapport allant du plus haut niveau vers le plus bas niveau (pour que ça puisse aider autant l'uilisateur en regardant le haut niveau et le développeur qui ira chercher le bas niveau).

    De cette manière, c'est moins frustrant d'avoir une boîte de dialogue avant de quitter qu'un crash brutale. Aussi, l'utilisateur peut faire copier/coller du rapport pour l'envoyer au support.
    Dans ta classe de base des exceptions, tu peux proposer d'y ajouter des causes, des propositions de résolution (util si l'utilisateur est à l'origine du soucis, comme par exemple une valeur invalide dans son fichier de configuration, un fichier manquant etc...) et aussi des infos sur le contexte de déclenchement (les variables et leurs valeurs autour).

    Pour finir, tu redéfinit le throw histoire d'ajouter automatiquement le fichier et la ligne de lancement de l'exception. Avec toutes ces infos, t'aura plus de facilité à cibler le soucis et le reproduire plutôt que de truffer ton code de point d'arrêt et relancer l'apply en checkant pas à pas le contexte.

    Dernière avantage, en cas de pépin, l'utilisateur ne peut pas "s'en foutre" et continuer comme ci de rien était. Ha j'ai oublié encore un avantage, les exceptions ne te mobilisent pas la valeur de retour des traitements, ça te donne un code plus propre que sans cesse placer des paramètres de sortie et checker les valeurs de retour pour te retrouver dans un traitement de haut niveau qui te renvoi "faux" sans aucune explication sur ce qui a merdé.
    "Heureusement qu'il y avait mon nez, sinon je l'aurais pris en pleine gueule" Walter Spanghero

Discussions similaires

  1. [XL-2007] Validation des données par enrgeistrement => Erreur défiinie par l'App ou l'Objet
    Par mouftie dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2015, 11h21
  2. Réponses: 2
    Dernier message: 05/10/2012, 12h51
  3. Réponses: 5
    Dernier message: 01/10/2006, 13h48
  4. [PHP-JS] validation des données
    Par emma des bois dans le forum Langage
    Réponses: 6
    Dernier message: 10/02/2006, 15h28
  5. dbgrid AND validation des données
    Par samlerouge dans le forum Bases de données
    Réponses: 10
    Dernier message: 11/06/2004, 23h08

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