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 :

Erreur dans MyBase.load ne stoppe pas le code


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Par défaut Erreur dans MyBase.load ne stoppe pas le code
    Bonjour,

    Sous visual studio express 2010, avec une machine x64, lorsqu'une erreur se produit dans le Form_Load event, au lieu de crasher, le form se montre quand même, mais incomplet (ie: l'erreur a produit l'équivalent d'un 'Exit Sub' dans le Form_Load event)

    De ce fait, il est très difficile de trouver la source de l'erreur.
    N'y a-t-il pas un moyen de forcer le crash dans le form_Load?

    J'ai essayé ceci pour vérifier le problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            MessageBox.Show("Avant")
            Throw New Exception
            MessageBox.Show("Après")
        End Sub
    La logique voudrait que le code s'arrète mais au lieu de ca il s'exécute, me montre la MsgBox "Avant" puis le form...

    Une idée?

    Zebrette

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 200
    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 200
    Par défaut
    oui tu n'es pas le premier à avoir remarqué ce fonctionnement étrange

    soit déplacer le code dans le constructeur, soit mettre un try catch
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Par défaut
    Oui j'ai trouvé un peu de contenu sur les forums en effet,
    mais avec un try catch, une fois que j'ai l'erreur, comment je remonte à la source?

    J'avais des bloc try catch dans tous mes événements Load, mais comme le code commence à devenir conséquent, ca devient long de retrouver la source...

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 200
    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 200
    Par défaut
    ?

    si tu ne mets pas de try catch, de toute facon l'erreur est affiché à l'utilisateur donc ca n'est pas conseillé

    si tu veux que l'erreur empeche la création du form et averti par l'appelant, il faut mettre le code dans le constructeur sans try catch dans le constructeur mais dans l'appelant

    si tu mets un try catch dans le form_load tu peux gérer l'erreur comme dans un autre sub ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Par défaut
    Merci de m'aider mais je pense que j'ai mal expliqué mon problème:

    Dans le form_load (ou le constructeur, peu importe je crois en fait) je fais appel à des subs extérieurs (beaucoup, certaines faisant elles même référence à d'autre subs etc...).

    Dans toutes ces imbrications, je ne peux pas savoir où se produit l'erreur puisque le try catch dans le form load ne localise pas la source précisément (ou du moins je n'ai pas trouvé comment)...

    Mais je crois que je vais m'en sortir, step by step.

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 200
    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 200
    Par défaut
    dans sub form_load si tu mets un try catch, dans le catch ex.stacktrace contient la pile des appels au moment de l'erreur

    donc si form_load appelle A qui appelle B et que ca plante dans B tu vas voir B en haut du stacktrace
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. [AC-2010] Erreur dans fonction sous Office10 et pas dans office xp
    Par Guy FALESSE dans le forum IHM
    Réponses: 25
    Dernier message: 28/09/2013, 09h48
  2. Réponses: 10
    Dernier message: 05/02/2007, 17h07
  3. Problème de fenêtre modal qui ne stoppe pas le code en arrière plan
    Par Sebcaen dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 25/09/2006, 13h43
  4. Réponses: 4
    Dernier message: 10/08/2006, 13h44
  5. Réponses: 5
    Dernier message: 14/05/2006, 22h41

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