D'aucuns affirment que la gestion des erreurs sous JScript se révèle plus performante que celle de VBScript. Cependant elle se révélerait plus difficle à mettre en oeuvre.
L'instruction try...catch permet un traitement des erreurs en désignant un bloc de code à essayer (try), un autre permettant de gérer les erreurs (catch) provenant du premier et un dernier est exécuté subséquemment au traitement des erreurs de façon non-conditionnelle.
try { //Instructions à essayer; [throw Exception] } catch(Exception) { //Instructions de gestion d'erreurs; } [finally { //Instructions à exécuter suite au traitement des erreurs; }]
L'instruction throw permet de déclencher une exception personnalisée dans le bloc d'instructions à essayer.
L'instruction try permet de tester un bloc d'instructions. Si ce dernier retourne une exception, c'est-à-dire a provoqué une erreur, alors l'instruction catch saisira le nom de l'exception par l'intermédiaire de son argument et la gérera, à l'aide de ses instructions.
L'objet Error permet de conserver diverses informations relatives à l'erreur. Ces informations sont accessibles à l'aide de deux propriétés, number et description indiquant respectivement le numéro et la description de l'erreur.
Le bloc de code de l'instruction finally est toujours exécuté, même si les blocs de try ou catch possèdent une instruction de renvoi ou que l'erreur a été regénéré dans ce-dernier. Toutefois, si une erreur d'exécution non traitée se produisait dans le bloc de catch notamment, alors le bloc de finally ne serait pas exécuté.
Objet_Error.Propriété
L'objet Error est utilisable dans le bloc de code de traitement des erreurs afin de connaître l'identité de l'erreur et éventuellement de lui appliquer en conséquence, une réponse adaptée.
Le langage JScript est sensible au niveau de la casse, ainsi, il faut veiller à rédiger systématiquement toutes les instructions en casse minuscule, pour le reste, il est possible de pratiquer selon les goûts et les couleurs de chacun.
Exemple [voir]... catch(e) { alert("Une erreur est survenue.\n Numéro : " + e.number + " Description : " + e.description); } ...
<!-- METADATA type="typelib" FILE="C:\Program Files\Fichiers communs\System\ado\msado15.dll" --> <%@ LANGUAGE="JScript" %> <html> <head> <% var ch_Connection; ch_Connection = "Provider=Microsoft.Jet.OLEDB.4.0;" + " Data Source=H:\personnel.mdb"; function Verif_Error (oConn) { if (oConn.Errors.Count > 0) { for(var oError = new Enumerator(oConn.Errors); !oError.atEnd(); oError.moveNext()) { Response.Write("" + "<table border=1 cellpadding=1 cellspacing=2>" + "<tr><th>Propriété</th><th>Valeur</th>" + "</tr><tr><th>Numéro</th><td>" + oError.item().Number + "</td></tr>" + "<tr><th>Erreur native</th><td>" + oError.item().NativeError + "</td></tr>" + "<tr><th>Etat SQL</th><td>" + oError.item().SQLState + "</td></tr>" + "<tr><th>Source</th><td>" + oError.item().Source + "</td></tr>" + "<tr><th>Description</th><td>" + oError.item().Description + "</td></tr>" + "</table>"); } } } %> </head> <body> <% var obj_Error; var Objet_Connection; var Objet_Recordset; Objet_Connection = Server.CreateObject("ADODB.Connection"); Objet_Recordset = Server.CreateObject("ADODB.Recordset"); Objet_Connection.Open(ch_Connection); try { Objet_Recordset.Open("select *Nom from Fiche", Objet_Connection); Response.Write("<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>"); while (!Objet_Recordset.EOF) { Response.Write("<tr>" + "<td>" + Objet_Recordset("Nom") + "</td>" + "<td>" + Objet_Recordset("Prenom") + "</td>" + "<td>" + Objet_Recordset("Age") + "</td>" + "<td>" + Objet_Recordset("Qualite") + "</td>" + "<td>" + Objet_Recordset("eMail") + "</td>" + "<td>" + Objet_Recordset("Adresse") + "</td>" + "</tr>"); Objet_Recordset.MoveNext(); } Response.Write("</table>"); } catch (e) { Verif_Error(Objet_Connection); } finally { if (Objet_Recordset.State == adStateOpen) Objet_Recordset.Close(); Objet_Connection.Close(); Objet_Recordset = null; Objet_Connection = null; } %> </body> </html> |