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

VB.NET Discussion :

Err.Number VS Exception.GetHashCode


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut Err.Number VS Exception.GetHashCode
    Bonjour,

    Voila j'ai besoin d'identifier avec un ID Numérique les exceptions que léve mon application.
    Le but étant de les enregistrer en Base, mais je ne veux pas enregistrer plusieurs fois les mêmes.
    Avant de faire l'INSERT je vérifierais donc que cette Exception n'est pas déjà présente dans la table.
    Il y a bien la possibilité de vérifier sur le Type mais je trouve que faire la vérif sur un champ text c'est pas tip top.

    Le pb c'est comment obtenir un ID unique pour chaque Exception...
    j'ai donc pensé à Exception.GetHashCode et au bon vieux Err.Number.
    Sachant que si je pouvais éviter Err j'aimerais autant.

    Donc questions :

    Est ce que GetHashCode peux convenir ?
    Si non est ce ça pose pb d'aller chatouiller le Err.Number dans un Try/Catch du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            Try
     
                Dim I As Object = Nothing
     
                MsgBox(I.ToString)
     
            Catch ex As Exception
                Debug.Print(ex.Message)
                Debug.Print(Err.Number)
     
            End Try
    Si vous avez des idées/remarques/suggestion je suis preneur.
    @+

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    pourquoi tu veux enregistrer que le numéro d'erreur et pourquoi de manière unique ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Le problème est de savoir si une NullReferenceException déclenchée à plusieurs endroits différents possède un Hash différent à chaque fois ou pas.
    Sinon tu peux essayer de définir toi-même un ID d'erreur dans ton bloc catch.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Try
         Dim I As Object = Nothing
         MsgBox(I.ToString)
     Catch ex As Exception
         Debug.Print(ex.Message)
         Debug.Print(Err.Number)
         MonLog.Error("UnNumeroQueTuGeresALaMain", ex)
    End Try
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut
    pourquoi tu veux enregistrer que le numéro d'erreur et pourquoi de manière unique ?
    En fait j'applique un traitement à des Objet, et dans la table où se trouve les données relatives à ces objets je veux enregistrer le résultat du traitement fait sur l'objet. Qq chose du style :
    0 tout c'est bien passé
    X il y a eu une erreur ou X est l'ID de l'erreur dans la table des Erreurs.

    Comme je risque souvent d'avoir les même erreurs je veux éviter de génèrer des lignes en doubles pour rien dans la table Erreur.

    Voilà voilà.

    Le problème est de savoir si une NullReferenceException déclenchée à plusieurs endroits différents possède un Hash différent à chaque fois ou pas.
    Oui j'ai de gros doute la dessus surtout que dans MSDN j'ai trouvé :

    L'implémentation par défaut de la méthode GetHashCode ne garantit pas des valeurs de retour uniques pour des objets différents. En outre, le .NET Framework ne garantit pas l'implémentation par défaut de la méthode GetHashCode, et la valeur qu'elle retourne sera identique entre les différentes versions du .NET Framework. Par conséquent, l'implémentation par défaut de cette méthode ne doit pas être utilisée en tant qu'identificateur d'objet unique à des fins de hachage.
    Je pense partir sur un Ex.GetType.GetHashCode

    De plus je viens de constater que Err.Number est identique pour des Exceptions différentes quand l'exception n'est pas une Exception d'un type du FrameWork (c'est toujours 5).

    Le seul truc c'est que je perdrais le InnerException.

  5. #5
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Par défaut
    Salut

    Moi j'essaye de capturer l'exception qui se produit lorsque Microsoft.ACE.OLEDB.12.0 n'est pas present sur le pc.
    Le probleme c'est que je ne peut pas me fier au message car sur mon pc par example j'obtient le message en anglais sur un autre en francais.
    Et si j'utilise le ex.getType.getHashCode sur mon pc c'est toujours le meme mais quand je teste sur un autre c'est plus le meme code.
    Il existe pas un id ou une exception toute prete pour ce soucis

    Merci d'avance

  6. #6
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 62
    Par défaut
    Au final en cherchant dans le registre de windows on trouve si le provider est installer ou pas si HKEY_CLASSES_ROOT\Microsoft.ACE.OLEDB.12.0 existe ou pas

Discussions similaires

  1. Number Format Exception
    Par Javamar dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 12/03/2009, 15h18
  2. Numéro d'erreur unique VB.NET ? comme err.number sur vb6
    Par moris7 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 02/07/2008, 14h25
  3. Number Format Exception
    Par flora806 dans le forum Langage
    Réponses: 3
    Dernier message: 20/11/2007, 09h41
  4. Select Case Err.Number
    Par Mario Rousson dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/10/2007, 07h21

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