La gestion des erreurs sous VBScript se résume à l'utilisation de l'instruction On Error Resume Next et à un contrôle méticuleux du code afin de détecter tous les cas potentiels d'erreurs.
On Error Resume Next
En fait l'instruction VBScript On Error Resume Next placée au sommet du script, permet d'activer la gestion des erreurs dans des pages ASP.
Plus précisément, cette instruction évite l'interruption du déroulement d'un script lorsqu'une erreur se produit, et partant, les erreurs peuvent être traitées par le programmeur à l'aide de l'objet Err conservant les références de l'erreur en cours.
Une autre instruction On Error Goto 0 permet de désactiver la gestion d'erreur.
On Error Goto 0
L'objet Err constituant la solution de gestion des erreurs d'exécution ou de syntaxe, contient cinq informations, le numéro, la description et la source de l'erreur ainsi qu'un identificateur contextuel et l'adresse d'un fichier d'aide, toutes accessibles par des propriétés, et de plus possède la capacité de générer une erreur délibérément, ou d'effacer les information précitées par l'intermédiaire de deux méthodes.
Err.Propriété | Méthode
A l'aide de l'instruction On Error Resume Next pour la détection des erreurs et de l'objet Err pour leur gestion, il devient possible de concevoir des parades efficaces contre des dysfonctionnements prévisibles des applications ASP. Bien que la tâche se révéle fastidieuse, il est nécessaire de mettre en place un gestionnaire d'erreurs pour les programmes ASP, il n'y a rien de plus désagréable pour un utilisateur, surtout dans le cadre du commerce électronique, de se retrouver devant un affichage inattendu et de surcroît déplaisant.
Exemple [voir]<!-- METADATA type="typelib" FILE="C:\Program Files\Fichiers communs\System\ado\msado15.dll" --> <%@ LANGUAGE="VBScript" %> <html> <head> <% Function Verif_coll_Errors (obj_Connection) Dim obj_Error If Err.Number <> obj_Connection.Errors(0).Number Then Exit Function End If If obj_Connection.Errors.Count > 0 Then For Each obj_Error in obj_Connection.Errors If obj_Error.Number <> 0 Then Response.Write "" & _ "<table border=1 cellpadding=1 cellspacing=2>" & _ "<tr><th>Propriété</th><th>Valeur</th>" & _ "</tr><tr><th>Numéro</th><td>" & obj_Error.Number & "</td></tr>" & _ "<tr><th>Erreur native</th><td>" & obj_Error.NativeError & "</td></tr>" & _ "<tr><th>Etat SQL</th><td>" & obj_Error.SQLState & "</td></tr>" & _ "<tr><th>Source</th><td>" & obj_Error.Source & "</td></tr>" & _ "<tr><th>Description</th><td>" & obj_Error.Description & "</td></tr>" & _ "</table>" Verif_coll_Errors = True End If Next Else Verif_coll_Errors = False End If End Function On Error Resume Next %> </head> <body> <% Dim Ch_SQL Ch_SQL = "SELECT Noms, Prenom, Age, Qualites," _ & " eMail, Adresse, Situation FROM Fiche" Set obj_Recordset = Server.CreateObject("ADODB.Recordset") obj_Recordset.Open Ch_SQL,"DSN=personnel" If Verif_coll_Errors(obj_Recordset.ActiveConnection) = False Then %> <table border="1" cellpadding="3" align="center"> <tr> <td colspan="6">Fiches signalétiques des personnels</td> </tr> <tr> <td>Nom</td> <td>Prénom</td> <td>Age</td> <td>Qualité</td> <td>eMail</td> <td>Adresse</td> </tr> <% Do While Not obj_Recordset.EOF %> <tr> <td><%=obj_Recordset("Nom")%></td> <td><%=obj_Recordset("Prenom")%></td> <td><%=obj_Recordset("Age")%></td> <td><%=obj_Recordset("Qualite")%></td> <td><%=obj_Recordset("eMail")%></td> <td><%=obj_Recordset("Adresse")%></td> </tr> <% obj_Recordset.MoveNext Loop End If obj_Recordset.Close Set obj_Recordset = Nothing %> </tr> </table> </body> </html> |