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.:roll:
:?
Version imprimable
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.:roll:
:?
ç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
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.Code:
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
Kenavo
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...
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
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
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 ?
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
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. :yaisse2:
ç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:
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
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
comme le dit zoofy ce que tu dois avoir c'est :
Code:
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
L'accès à la base de données est statique. Donc, je le fais dans la feuille .aspx dont voici le code :
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.Code:
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] = ?">