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

ASP.NET Discussion :

[C#] Construction du message d'erreur (exception.message)


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 26
    Points : 18
    Points
    18
    Par défaut [C#] Construction du message d'erreur (exception.message)
    Bonjour ^^

    Toujours dans la continuité de la gestion des erreurs, je suis à la recherche de la "construction" de Exception.message.

    Je m'explique : pour faire simple, je possède des types de tubes et des fournisseurs. Pour un type de tube, on lui associe un fournisseur. L'utilisateur recevra donc un message lorsqu'il essaie de supprimer un fournisseur alors qu'il reste dans la base de données, des types de tube avec ce fournisseur.

    En récupérant l'exception et le message (MSDN : Exception.Message, propriété) qui lui est associé j'obtiens par exemple :

    L'instruction DELETE est en conflit avec la contrainte REFERENCE "TypeTube_Fournisseur_FK". Le conflit s'est produit dans la base de données "Carma", table "dbo.TypeTube", column 'Fournisseur'. L'instruction a été arrêtée.
    Je suppose que ce message a été généré à partir de plusieurs éléments (DELETE - TypeTube_Fournisseur_FK - Carma - dbo.TypeTube - Fournisseur) et comme j'aimerais éventuellement les récupérer, j'essaie de comprendre la construction de ce message d'erreur, comment il va chercher ses données etc (en vue de les réutiliser à mon tour).

    J'espère avoir été précis et je reste dispo pour plus de précision sur certains points ^^

    Merci d'avance

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Le message d'erreur que tu cites vient du fait que ta base de données "Carma" contient une contrainte d'intégrité référentielle entre ta table "TypeTube" et ta table "Fournisseur".

    Dans ton cas (instruction DELETE), le message dit que tu as tenté de supprimer une ligne dans la table "TypeTube" (table de référence), mais que la table "Fournisseur" contient des enregistrements qui sont liés au "TypeTube" que tu souhaites supprimer.

    Afin que ton instruction puisse être exécutée sans problème, il faut d'abord supprimer les enregistrements de la table "Fournisseur" qui sont liés au "TypeTube" que tu veux supprimer. Ensuite seulement tu pourras supprimer ton "TypeTube".

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Merci Matt d'avoir pris le temps de répondre ^^

    J'avais bien compris (la manipulation était volontaire, je savais qu'en essayant de supprimer un fournisseur qui était encore utilisé, j'aboutirai à cette erreur).

    Mais ma question portait sur comment est généré ce message ?
    => comment il arrive à obtenir TypeTube_Fournisseur_FK ou encore Carma, ou encore dbo.TypeTube.
    => comment est construit (avec quelles méthodes ?) le string 'Exception.message'

    voili voilou

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Difficile à dire, c'est le framework .NET qui génère ça en interne à partir des infos remontées par le SGBD

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 26
    Points : 18
    Points
    18
    Par défaut


    Dommage je me suis dit que si je pouvais signaler à l'utilisateur que l'erreur était due à "il reste encore des types de tubes avec ce fournisseur, donc tu ne peux pas supprimer le fournisseur".

    Et comme j'utilise également le DynamicData, c'est lui qui gère/génère les insertions/suppressions/lectures/modifications dans ma base de données.

    Ce serait envisageable de récupérer un numéro d'identification de l'erreur ? Quitte à créer une bibliothèque de ces numéros et pouvoir adapter le message d'erreur en conséquence ?

  6. #6
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    Non , il n'y a pas d'errorID, mais tu peux tres bien dans ton Business Logic, verifier avant insertion si la row dans la table parent exist.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Ca marche merci

    Sinon pour donner un point de réponse sur l'errorID j'ai pu la récupérer de cette manière (en partant sur un objet Exception) :

    J'ai rajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using System.Runtime.InteropServices;
    (objErr étant l'Exception récupérée via l'Application_Error) puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int errorNumber = Marshal.GetHRForException(objErr);
    LBErrorNumber.Text = Convert.ToString(errorNumber);
    Bon dans mon cas, il ne me reste plus qu'à convertir cet erroNumber en hexadécimal. Ainsi je pourrais me faire une liste des erreurs et afficher un message personnalisé, quelque chose dans ces eaux-la.

    Encore merci à vous tous d'être venu me dépanner
    A bientôt !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. message d'erreur "except NameError" ne fonctionne pas
    Par lamwat dans le forum Général Python
    Réponses: 5
    Dernier message: 24/04/2014, 19h50
  2. message d'erreur : Exception [EclipseLink-4002]
    Par drsbmm dans le forum NetBeans
    Réponses: 0
    Dernier message: 16/03/2014, 13h06
  3. Java et les exceptions (message d'erreur)
    Par Khalfe dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 29/09/2013, 19h35
  4. messages d'erreurs / exception
    Par zaineb.z dans le forum Hibernate
    Réponses: 13
    Dernier message: 26/06/2007, 18h06
  5. Message d'erreur "Exception"
    Par nefertari dans le forum Delphi
    Réponses: 4
    Dernier message: 29/05/2007, 14h28

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