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 :

Gestion des erreurs


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 44
    Par défaut Gestion des erreurs
    Bonjour à tous.

    Y a-t-il un moyen de gérer des erreurs asp.net ?
    Un peu comme en VB6 on a la fonction Err. Je voudrais éviter que les utilisateurs de l'application tombe sur des messages d'erreur trop complexes.

    Merci bien.

  2. #2
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    ça me parait un peu simple ta question, tu alnce l'idée comme ça ou t'a pas vraiement cherché ?

    Alors pour gérer les erreur tu as le truc bien (que j'ai pas encore tout compirs, mais c'est pas grave) qui fait comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Try
         ma série d'instructions
    Catch
         des isntructions si ça plante
    Finally
         là, je sais plus ce qu'il faut mettre
    End Try
    Et dans tout ça tu dispose d'un objet Err, qui est presque le mêmqu'en VB6, sauf qu'il est .NET et tu peux récupérer des nuémro, des description et des messages. Bref, va faire un tour dans la MSDN avec ça et tu devrais trouver ton bonheur.

    Kenavo

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    tout ce qui est dans le finally sera executé dans tous les cas (sauf fin de l'appli avec end)
    meme si tu fais exit sub dans le try ca fait le finally avant de sortir

    ca permet de desinstancier ce qu'on a créé de manière sure

    un bloc try doit avoir soit catch soit finally soir les deux

    sur le catch tu peux faire catch ex as exception
    et ex est l'objet qui contient l'erreur, te permet d'avoir la pile d'appel etc...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre averti
    Inscrit en
    Août 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 44
    Par défaut
    En fait j'avais essayé avec les messages personnalisés dans le webconfig, mais ça ne me retourne pas les pages spécifiées. Du coup je me suis dit qu'il y a un truc que je n'ai pas su faire.
    En plus avec ça j'ai l'impression de ne pouvoir géré que les erreurs http.

    Pourtant ce sont surtout les erreurs ASP.Net qui m'intéressent.

    Je ne connais pas du tout la fonction Try.
    Je vais essayer pour voir. Mais une question Dois'je la mettre sur l'événement qui déclenche l'erreur ou ailleurs, dans le Page_Load par exemple, avec un If Err pour déterminer la nature de l'erreur

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    si tu as deja fait du vb6 il y avait à l'époque
    On Error goto erreur

    code


    erreur:
    gestion de l'erreur


    try catch fait à peu près la meme chose
    en cas d'erreur dans le bloc try, ca saute dans le catch

    donc partout ou tu penses qu'il peut y avoir bug tu peux mettre le code dans un bloc try/catch
    ensuite tester ce que vaut la variable ex


    en cas de plantage dans une fonction appelé dans un bloc try/catch l'erreur est bien interceptée

    par contre toute erreur hors d'un try fait un plantage à l'utilisateur
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre averti
    Inscrit en
    Août 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 44
    Par défaut
    Si c'est aussi simple que le On error goto de VB6, tant mieux.

    Merci, je vais essayer ça.
    Mais j'ai une autre préoccupation : existe-t-il un endroit sur la planète ou je peux trouver une liste des erreurs ASP.Net et leur valeur Err.number ?

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    dans vb6 les erreurs étaient retourné par un nombre
    sur .net ca n'a rien à voir
    une erreur = un objet

    par exemple une fonction avec parametre à qui on ne donne pas le parametre va retourner un objet du type argumentnullexception
    une erreur de base est un objet exception
    tu regarde dans system. y a plein de []exception

    et donc tu peux faire catch ex as argumentnullexception
    traitement
    catch ex as exception
    traitement

    ex.message est le message d'erreur
    ex.stacktrace permet d'avoir la pile des appels
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre averti
    Inscrit en
    Août 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 44
    Par défaut
    Ok. Merci encore.
    Je me mets au boulot.
    En cas de problème, je reviens. Et je reviens aussi si j'arrive à mettre en oeuvre toutes ces explications.

  9. #9
    Membre averti
    Inscrit en
    Août 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 44
    Par défaut
    ça ne marche pas. Voila mon code.
    En fait j'envoie des données dans une base de données. Si une erreur se produit au cours de l'envoi, je souhaiterais que l'erreur soit décrite dans un label, plutôt que l'affiche standard, trop complexe pour l'utilisateur profane.

    Mais seulement, je reçois toujours le message d'erreur standard Asp.net.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            Try
                Label1.ForeColor = Drawing.Color.Green
                Label1.Text = "Ajout validé avec succès"
            Catch ex As System.Data.OleDb.OleDbException
                Label1.ForeColor = Drawing.Color.Red
                Label1.Text = "Une erreur s'est produite, veuillez recommencer"
            End Try

  10. #10
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Ben c'est normal. Ce que tu essaie de tester c'est : est ce que j'arrive à mettre la couleur Verte au fond du label.
    ça il y arrive toujours.
    Ce qu'il faut que tu mette dans le Try c'est l'envoi de données.

    Envoi tout ton code, qu'on aide mieux.

    Kenavo

  11. #11
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    comme le dit zoofy ce que tu dois avoir c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            Try
                code_acces_base_de_données
                'si on est encore là c'est qu'il n'y a pas eut d'erreur sinon ca aurait sauté dans le catch
                'donc on peut dire que c'est bon
                Label1.ForeColor = Drawing.Color.Green
                Label1.Text = "Ajout validé avec succès"
            Catch ex As System.Data.OleDb.OleDbException
                Label1.ForeColor = Drawing.Color.Red
                Label1.Text = "Une erreur s'est produite, veuillez recommencer"
            End Try
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  12. #12
    Membre averti
    Inscrit en
    Août 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 44
    Par défaut
    L'accès à la base de données est statique. Donc, je le fais dans la feuille .aspx dont voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <asp:SqlDataSource ID="dsAddCourrierArr" runat="server" ConflictDetection="CompareAllValues"
            ConnectionString="<%$ ConnectionStrings:ArchivesACEPConnectionString %>" DeleteCommand="DELETE FROM [CourrierArrivée] WHERE [numOrdre] = ? AND [dateArrivee] = ? AND [expediteur] = ? AND [objet] = ? AND [destinataire] = ? AND [numService] = ? AND [Localisation] = ?"
            InsertCommand="INSERT INTO [CourrierArrivée] ([numOrdre], [dateArrivee], [expediteur], [objet], [destinataire], [numService], [Localisation]) VALUES (?, ?, ?, ?, ?, ?, ?)"
            OldValuesParameterFormatString="original_{0}" ProviderName="<%$ ConnectionStrings:ArchivesACEPConnectionString.ProviderName %>"
            SelectCommand="SELECT [numOrdre], [dateArrivee], [expediteur], [objet], [destinataire], [numService], [Localisation] FROM [CourrierArrivée]"
            UpdateCommand="UPDATE [CourrierArrivée] SET [dateArrivee] = ?, [expediteur] = ?, [objet] = ?, [destinataire] = ?, [numService] = ?, [Localisation] = ? WHERE [numOrdre] = ? AND [dateArrivee] = ? AND [expediteur] = ? AND [objet] = ? AND [destinataire] = ? AND [numService] = ? AND [Localisation] = ?">
    La procédure qui déclenche l'erreur est générée par un événement InsertedItem du FormView qui accède à la base de données via la source de données ci-dessus.

Discussions similaires

  1. [FB] Gestion des erreurs et application francophone
    Par Benjamin GAGNEUX dans le forum Installation
    Réponses: 10
    Dernier message: 20/05/2006, 14h54
  2. [struts][Datasource]Gestion des erreurs
    Par GreenJay dans le forum Struts 1
    Réponses: 8
    Dernier message: 15/09/2004, 16h51
  3. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20
  4. [XSLT]Est ce qu'il y'a la gestion des erreur en xslt ?
    Par miloud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/02/2004, 17h19
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 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