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 :

Comment avoir plus d'info sur les exceptions n'apparaissant que dans la sortie debug


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut Comment avoir plus d'info sur les exceptions n'apparaissant que dans la sortie debug
    Bonjour,
    Je charge depuis SQL Server un formulaire assez classique (j'en ai pas mal d'autres selon le même code) qui ne posent pas pb
    Extrait de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            Select Case ModeOuvertureForm
                Case TypeOuvertureForm.Tous
                    AchatBNav.Visible = True
                    Dim query = From Ach In ctx.Achats Select Ach
                    If ChargementLimite() Then query = query.Take(NbreMaxSelectionnable)
                    query.Load()
                    GenericBindingSource.DataSource = ctx.Achats.Local.ToBindingList             ' ToBindingList necessite Imports System.ComponentModel 
                    Debug.WriteLine("Formulaire : " & Me.Name & " Query et BS chargés en mode -Tous-")
    Et tout se passe bien, sans aucun pb ni message
    Par contre, si je regarde la sortie du debug, je trouve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Formulaire : FormAchatDetail Fermeture AchatBS_PositionChanged
    Une exception de première chance de type 'System.ArgumentOutOfRangeException' s'est produite dans System.Windows.Forms.dll
    'Phila_WinGUI.vshost.exe' (Managé (v4.0.30319))*: 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\mscorlib.resources\v4.0_4.0.0.0_fr_b77a5c561934e089\mscorlib.resources.dll' chargé
    Une exception de première chance de type 'System.Reflection.TargetInvocationException' s'est produite dans mscorlib.dll
    Une exception de première chance de type 'System.ArgumentOutOfRangeException' s'est produite dans System.dll
    Une exception de première chance de type 'System.ArgumentOutOfRangeException' s'est produite dans System.Windows.Forms.dll
    Une exception de première chance de type 'System.Reflection.TargetInvocationException' s'est produite dans mscorlib.dll
    Une exception de première chance de type 'System.ArgumentOutOfRangeException' s'est produite dans System.dll
    Une exception de première chance de type 'System.ArgumentOutOfRangeException' s'est produite dans System.Windows.Forms.dll
    Une exception de première chance de type 'System.Reflection.TargetInvocationException' s'est produite dans mscorlib.dll
    Une exception de première chance de type 'System.ArgumentOutOfRangeException' s'est produite dans System.dll
    Formulaire : FormAchatDetail Query et BS chargés en mode -Tous-
    Ces exceptions n'ont pas empêché le chargement du Form, mais j'aimerais en connaitre la raison car je ne les retrouve pas sur mes autres formulaires
    J'ai essayé de les pointer avec un pas à pas et des debug.writeline mais sans réel succès.
    J'ai essayé d'englober le tout dans un Try/Catch pour saisir l'exception, mais aucune ne se lève !
    Y a t il un moyen d'avoir plus d'info sur leur origine ?
    par avance, merci
    Bertrand

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 206
    Points : 455
    Points
    455
    Par défaut
    Edit : j'avais pas lu que tu avais déjà essayé le try catch
    As tu essayé en release ? des fois des erreurs apparaissent en release mais pas en debug

  3. #3
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Sous Visual Studio dans Débug/Exception tu peux cocher Win32 et C++ ça pourrait t'aider à les catcher (Pas sûr du tout)

  4. #4
    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
    Une exception de première chance ne signifie pas forcément qu'il y a un problème dans le code. Comme l'explique David Kline sur son blog, une exception de première chance peut survenir lorsqu'on lance une application en mode debug. A ce stade, le debugger est notifié de toutes les exceptions qu'il rencontre. Lorsqu'il en rencontre une, l'application est suspendue, et le debugger décide comment est-ce qu'il doit gérer cette exception.

    Le premier passage dans cette mécanique s'appelle une expresion "de première chance". Selon la configuration du debugger, il va soit reprendre le fil d'exécution de l'application, soit la laisser en pause et entrer en mode debug. Si l'exception est gérée par l'application, alors elle continuera à tourner normalement.

    Donc apparemment, soit tu as déjà catché ton exception, soit les réglages de ton debugger font qu'elle n'est pas déclenchée (voir le post d'_Ez3kiel).

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Re bonjour et merci à tout 3 pour votre réponse rapide !
    J'ai essayé :
    - en mode Release : idem
    - coché exception Win32 et c++ (j'ai coché "levé", c'est bien ça ? ) -> idem

    Il n'y a pas de Try/cast autour de la zone censée déclencher l'erreur, et tous mes catch déclenchent un message.box
    J'ai essayé d'en rajouter -> idem, rien ne se déclenche !

    Que penser ?
    Merci encore
    Bertrand

  6. #6
    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
    Citation Envoyé par 105rn2 Voir le message
    Que penser ?
    Que tu ne lis pas attentivement les liens que l'on te donne

    Les exceptions ont déjà dû être gérées en amont. Le message qui s'affiche dans la sortie t'indique juste qu'il y a eu une exception mais qu'elle a été gérée.

    Par exemple pour la ligne
    Une exception de première chance de type 'System.ArgumentOutOfRangeException' s'est produite dans System.dll
    l'exception a été gérée au sein de System.dll directement, dans le Framework. Donc tu n'as aucun intérêt à la récupérer...

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    re,
    Que tu ne lis pas attentivement les liens que l'on te donne
    En fait, (et c'est peut être là le pire) je pense l'avoir bien lu (bien compris ?)
    Si je résume, il peut être "normal" d'avoir ce type d'exception
    Par contre, par manque d'expérience (?), j'essaie de comprendre : j'ai 2 Form ayant à priori le même code, accédant à ma même BDD (mais pas la même table) : l'un me déclenche systématiquement des exceptions (à priori mineures car résolues par le Framework) et l'autre pas !
    Est ce que la sortie debug, suit systématiquement la chronologie des événements ? en mode pas à pas , je n'ai pas su déterminer si les exceptions apparaissaient en ligne 5,6 ou 7 (peut être du au temps de réponse du serveur)
    Je laisse ça de coté, puisque non bloquant !
    merci encore à tous !
    Bertrand

  8. #8
    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
    Citation Envoyé par 105rn2 Voir le message
    Si je résume, il peut être "normal" d'avoir ce type d'exception
    Oui, une exception n'est pas toujours synonyme d'erreur. Tu peux très bien dire si à tel endroit je reçois un 0 (zéro), alors je vais lancer une exception car j'ai besoin de lancer un traitement spécifique. Bien sûr l'exemple que je donne ici n'a pas lieu d'être utilisé dans du code, mais c'est pour donner un exemple parlant. En gérant l'exception et en exécutant notre traitement spécifique, on évite de faire planter l'application et tout roule

    Citation Envoyé par 105rn2 Voir le message
    Est ce que la sortie debug, suit systématiquement la chronologie des événements ? en mode pas à pas , je n'ai pas su déterminer si les exceptions apparaissaient en ligne 5,6 ou 7 (peut être du au temps de réponse du serveur)
    Là je ne sais pas trop.

    Citation Envoyé par 105rn2 Voir le message
    Je laisse ça de coté, puisque non bloquant !
    Tu as bien raison Ne perds pas trop de temps avec ça, l'essentiel est de comprendre que le framework les a géré, et qu'il t'a juste notifié qu'une exception a été déclenchée et gérée. Si tu veux en savoir plus, tu peux toujours t'amuser à débugger le framework en chargeant les symboles du .NET Framework en debug, et regarder ce qu'il se passe.

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Si tu veux en savoir plus, tu peux toujours t'amuser à débugger le framework
    Ben, Euh; .. là Non !
    Il faut toujours savoir garder une part de mystère
    Merci encore !
    Bertrand

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/02/2013, 13h32
  2. Réponses: 15
    Dernier message: 03/06/2010, 21h44
  3. Réponses: 4
    Dernier message: 06/10/2009, 18h44
  4. Réponses: 15
    Dernier message: 06/05/2008, 18h02
  5. Réponses: 4
    Dernier message: 17/11/2006, 20h35

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