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 :

Crash application sans message erreur.


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 51
    Par défaut Crash application sans message erreur.
    Bonjour à tous,
    Voilà j'ai un petit problème dans mon application, en mode Debug mon appli se ferme comme une brute, et je reviens sous visual studio, sans même un message d'erreur...

    Fonctionnement de mon appli : je lance un processus "Ansur.exe", qui exécute un test électrique. Je surveille la fermeture de ce processus. Dès lors qu'il est terminé, je lance la fonction "Fermeture". Je lis alors un fichier texte résultant du contrôle électrique créé précédemment via Ansur.
    Si j'ai 15 fois le mot "..... Test Passed", j'affiche ma PictureBox24. Sinon, c'est que le test à échoué et j'affiche ma PictureBox23.
    Également, je passe ma ToolStripProgressBar2 à 100%, et marque "Terminé" en ToolStripStatusLabel3.

    Et c'est pile à ce moment là que mon appli plante...


    Voici un extrait de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
     StrCommandLine = FILE_ANSUR + " /r " + FILE_RESULT + FILE_JOBORDER + " /h"
                Call Shell(StrCommandLine, 1)
     
     
     
            Catch ex As Exception
     
                'Code exécuté en cas d'exception
                MsgBox("Erreur")
     
            End Try
     
            'Controle fermeture processus ansur.exe
     
            Dim p As Process = Process.GetProcessesByName("ansur")(0)
            AddHandler p.Exited, AddressOf Fermeture
            p.EnableRaisingEvents = True
     
            Me.ToolStripProgressBar2.Value = 90
            Me.ToolStripStatusLabel3.Text = "Contôle du résultat de test..."
     
     
        End Sub
     
     
        Private Sub Fermeture(ByVal sender As Object, ByVal e As EventArgs)
     
            Dim num As Integer = 0
            Dim FichierALire As String
            Dim i As Integer = 0
            FichierALire = FILE_RESULT & dossiertable & ".mtr"
            Try
                Dim sr As StreamReader = New StreamReader(FichierALire, System.Text.Encoding.Default)
                Dim ligne As String
                '--- Traitement du fichier ligne par ligne
                While Not sr.EndOfStream()
                    ligne = sr.ReadLine()
     
                    If ligne = "                     <Status>Passed</Status>" Then
                        i = (i + 1)
                    End If
     
                End While
                '--- Referme StreamReader
                sr.Close()
     
                If i = 14 Then
                    'MsgBox("Test passé !")
                    num = 1
                Else
                    'MsgBox("Test échoué !")
                    num = 2
                End If
     
            Catch ex As Exception
                'traitement de l'exception sinon :
                Throw ex
            End Try
            Call resultattest(num)
     
        End Sub
     
        Private Sub resultattest(ByVal num As Integer)
     
            'MsgBox(num)
            Me.ToolStripProgressBar2.Value = 100
            Me.ToolStripStatusLabel3.Text = "Terminé."
            If num = 1 Then
                Me.PictureBox24.Visible = True
            Else
                Me.PictureBox23.Visible = True
            End If
     
        End Sub

    Quelqu'un aurait-il une idée ? Merci pour votre aide !

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 337
    Par défaut
    Bonjour,

    Remplacez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Catch ex As Exception
    'traitement de l'exception sinon :
    Throw ex
    End Try
    Call resultattest(num)
    Par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Catch ex As Exception
    MessageBox.Show(ex.Message)
    Finally
    Call resultattest(num)
    End Try
    Vous n'auriez pas appelé la fermeture du formulaire quelque part défois ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 51
    Par défaut
    Bonjour Rainui et merci pour votre réponse, en quoi consiste exactement le "Throw ex" ?

    J'ai remplacé le code, et rien n'y fait, ça crash toujours...

    D'autant plus j'ai 2 userform qui se ferment, j'en aurait qu'un, ok mais là j'en ai deux... ^^

    merci

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    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 198
    Par défaut
    Citation Envoyé par botbot Voir le message
    en quoi consiste exactement le "Throw ex" ?
    vous tapez du code dont vous ne comprenez pas le sens !?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 51
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    vous tapez du code dont vous ne comprenez pas le sens !?
    En effet j'ai plus l'habitude du :

    Try
    Catch...
    End try

    Pourquoi j'étais parti sur du trhow, bonne question, j'ai surement du faire un copié coller d'un code existant que j'ai adapté sans trop chercher à comprendre...

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    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 198
    Par défaut
    mettez un point d'arret sur la sub resultattest pour voir ce qui se passe en mode debug en pas à pas

    si num ne peut avoir que 2 valeurs et sert à exprimer une réussite, pourquoi ne pas utiliser Reussite As Boolean, ca serait tellement plus clair ...

    après qu'une appli se ferme ca ne veut pas forcément dire qu'il y a un crash, ca peut être un fermeture normale qu'on a fait en pensant écrire autre chose, par contre dans votre cas ca semble plus que probable vu que ca freeze en release
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 337
    Par défaut
    Bonjour,

    Si vous fermez le formulaire de démarrage et que votre application est réglée pour se fermer sur la fermeture de ce formulaire, l'application se fermera même si d'autres formulaires sont ouverts.

    Pour éviter cela, dans les propriétés de l'application, allez sur l'onglet Application et changez le mode d'arret.

    @Pol63 : une simple intuition en voyant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Catch ex As Exception
     
    'Code exécuté en cas d'exception
    MsgBox("Erreur")
     
    End Try


    EDIT: Vous pourriez taper moins vite, je n'ai pas le temps de répondre

  8. #8
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    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 198
    Par défaut
    Citation Envoyé par Rainui Voir le message
    EDIT: Vous pourriez taper moins vite, je n'ai pas le temps de répondre
    Et encore j'ai eu des soucis de piles du clavier ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 51
    Par défaut
    Citation Envoyé par Rainui Voir le message
    Bonjour,

    Si vous fermez le formulaire de démarrage et que votre application est réglée pour se fermer sur la fermeture de ce formulaire, l'application se fermera même si d'autres formulaires sont ouverts.

    Pour éviter cela, dans les propriétés de l'application, allez sur l'onglet Application et changez le mode d'arret.
    Mon problème en question est sur le form1, mon form de démarrage/fermeture est le form2.
    J'ai essayé de changer cette propriété de fermeture en la passant à " A la fermeture du dernier formulaire", pareil...

  10. #10
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    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 198
    Par défaut
    qu'est-ce qui te fait dire que c'est un crash vu qu'il n'y a pas de message d'erreur ?

    @rainui, à voir si le code que tu proposes correspond à ce qu'il veut faire, je pense qu'en cas d'erreur il veut throw sinon (et seulement sinon) afficher les résultats

    par contre ta sub fermeture est appelée par un évènement donc par une classe du framework, donc y mettre un throw n'est pas une bonne idée, ca va remonter l'erreur dans le framework
    thrower est utile si quelqu'un de plus bas niveau appelle, pas l'inverse
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 51
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    qu'est-ce qui te fait dire que c'est un crash vu qu'il n'y a pas de message d'erreur ?
    Et bien mon programme qui le mode debug subitement dès lors que je veux changer la valeur de ma progressbar, alors que (je ne pense pas) lui avoir demandé...

    @rainui, à voir si le code que tu proposes correspond à ce qu'il veut faire, je pense qu'en cas d'erreur il veut throw sinon (et seulement sinon) afficher les résultats

    Citation Envoyé par Pol63 Voir le message
    par contre ta sub fermeture est appelée par un évènement donc par une classe du framework, donc y mettre un throw n'est pas une bonne idée, ca va remonter l'erreur dans le framework
    thrower est utile si quelqu'un de plus bas niveau appelle, pas l'inverse
    Là je suis un peu perdu... Je vais me renseigner sur l'utilité du throw...quoi qu'il en soit, j'ai rectifié le code par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Catch ex As Exception
    MessageBox.Show(ex.Message)
    Finally
    Call resultattest(num)
    End Try
    J'ai fait un essai lorsque je lance mon programme directement à partir du .exe de la version Release. Surpise : ma progressbar prend bien la valeur 100% et le status label "Terminé."
    En revanche curseur sablier et plantage infini, à mon avis au moment ou il veut afficher ma picturebox...

Discussions similaires

  1. Application qui quitte sans message d'erreur
    Par Pouknouki dans le forum VB.NET
    Réponses: 13
    Dernier message: 22/11/2013, 16h37
  2. [XL-2010] Crash aléatoire Excel 2010 sans message d'erreur
    Par franck_78 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/02/2012, 09h59
  3. Réponses: 2
    Dernier message: 23/08/2007, 20h08
  4. [VBA-E]Détection de feuilles inexistantes sans message d'erreur
    Par Jipété dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2006, 08h39
  5. "try...except" sans message d'erreur
    Par SchpatziBreizh dans le forum Langage
    Réponses: 4
    Dernier message: 12/07/2005, 09h50

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