Objet ASPError | |
Introduit dans la version ASP 3.0, l'objet ASPError intégré vous permet de visualiser en détail les informations sur la dernière erreur survenue dans le script d'une page ASP dans la session en cours. Cet objet, doté de neuf propriétés en lecture seule, fournit des informations plus détaillées sur le type et la source des erreurs que l'objet Err de VBScript. Pour utiliser l'objet ASPError et les propriétés qu'il présente, vous devez appeler une nouvelle méthode de l'objet Server, GetLastError, qui renvoie un objet ASPErrorObject avec les valeurs des propriétés définies de façon à refléter les détails concernant la dernière erreur survenue dans le script. Dim objMyASPError Set objMyASPError = Server.GetLastError Lorsque vous installez IIS 5.0, par défaut, toutes les erreurs de prétraitement, script et exécution dans le code ASP entraînent l'arrêt du traitement du script en cours et le renvoi de l'exécution du script vers une page d'erreur personnalisée nommée Le script Vous pouvez utiliser la page d'erreur par défaut, Les propriétés, collections, méthodes et événements de l'objet ASPError sont décrits dans le cadre suivant. |
Commentaires/Dépannage | |
De nombreux développeurs ASP débutants utilisent le code suivant pour activer le débogage de leurs scripts en utilisant l'objet Err dans VBScript : On Error Resume Next Si vous incluez cette ligne de code dans votre script, alors uniquement les erreurs de prétraitement et de script (syntaxe) forceront IIS à appeler la méthode Server.Transfer et à envoyer l'exécution du script à votre script Dim intCounter For intCounter = 1 to 100 intResult = intCounter / (intCounter - 100) Next Dans ce fragment de code, vous devez ajouter du code avant l'instruction Next pour intercepter l'erreur de division par zéro qui survient lorsque la valeur intCounter est égale à 100. L'ajout de ces lignes pour intercepter les erreurs dans votre code est laborieux et prédisposé aux erreurs, car vous devez prévoir quelles lignes sont les plus sensibles aux erreurs éventuelles. Par conséquent, et parce que l'objet ASPError fournit plus d'informations que l'objet Err, il est déconseillé d'utiliser On Error Resume Next, si possible. Une autre application réussie de la page d'objet ASPError, Une autre possibilité consiste à utiliser le script Les exemples de code illustrant les propriétés de l'objet ASPError utilisent tous trois scripts de génération d'erreur différents. Le premier contient une erreur de syntaxe, le second contient une erreur dans une directive de prétraitement et le dernier génère une erreur d'exécution. Les exemples utilisent tous les mêmes trois pages ASP pour générer les erreurs, alors que le contenu de la page d'erreur **** BEGIN Error Generating Script #1 **** <HTML> <HEAD><TITLE> Error Generation Page #1 </TITLE></HEAD> <BODY> <% ' This page contains a syntax error. ' In the following For...Next loop, the keyword ' "For" is mispelled. Dim intCounter Fir intCounter = 1 to 100 %> Look everyone! I'm counting: <%=intCounter%><BR> <% Next %> </BODY> </HTML> **** END Error Generating Script #1 **** **** BEGIN Error Generating Script #2 **** <HTML> <HEAD><TITLE> Error Generation Page #2 </TITLE></HEAD> <BODY> <% ' This page contains a preprocessing error. ' The work "file" in the #INCLUDE preprocessor ' directive is mispelled: %> <!--#include fil=/headers/AdminHeader.INC --> </BODY> </HTML> **** END Error Generating Script #2 **** **** BEGIN Error Generating Script #3 **** <HTML> <HEAD><TITLE> Error Generation Page #3 </TITLE></HEAD> <BODY> <% ' This page contains a runtime error. ' In the following For...Next loop, when the ' intCounter variable gets to zero, the result ' is a divide by zero error. Dim intCounter Dim dblDivResult For intCounter = 1 to 100 dblDivResult = intCounter / (intCounter - 100) %> Look everyone! I'm dividing: <%=dblDivResult%><BR> <% Next %> </BODY> </HTML> **** END Error Generating Script #3 **** |
ASPCode | |
objASPError.ASPCode | |
La propriété ASPCode contient un code numérique représentant l'erreur spécifique à ASP survenue dans le script qui a généré l'erreur. La propriété est renseignée par IIS si l'erreur survient en traitant le script ASP. La propriété ASPCode est définie sur lecture seule. |
|
Paramètres | |
Aucun |
|
Exemple | |
Cet exemple suppose que le code suivant a été ajouté au script d'erreur personnalisé par défaut, **** BEGIN ASPCode Example Script **** <% ' This script demonstrates the use of the ASPCode ' property of the ASPError object. Dim objMyASPError Set objMyASPError = Server.GetLastError( ) Response.Write "The value of the ASPCode property is " & objMyASPError.ASPCode %> **** END ASPCode Example Script **** Lorsque vous exécutez les scripts de génération d'erreur, le script d'exemple précédent génère les trois réponses suivantes : Script de génération d'erreur #1 : The value of the ASPCode property is [EMPTY] Script de génération d'erreur #2 : The value of the ASPCode property is ASP 0128 Script de génération d'erreur #3 : The value of the ASPCode property is [EMPTY] |
|
Remarques | |
Comme indiqué précédemment, la propriété ASPCode n'est pas renseignée, sauf si l'erreur est survenue lors de l'interprétation du script ASP lui-même. La présentation des directives de prétraitement est terminée. |
|
ASPDescription | |
objASPError.ASPDescription | |
La propriété ASPDescription est une valeur de chaîne renseignée par IIS à la détection d'une erreur ASP. Elle fournit des données plus descriptives sur le type de l'erreur ASP survenue que la propriété ASPCode. Comme avec la propriété ASPCode, la propriété ASPDescription n'est renseignée que si l'erreur qui survient fait partie de l'interprétation d'un script ASP, plutôt que s'il s'agit d'une erreur d'exécution. |
|
Paramètres | |
Aucun |
|
Exemple | |
Cet exemple reprend les scripts de génération d'erreur apparaissant à la fin de la section Commentaires/Dépannage. Il suppose que vous avez ajouté le code suivant au script d'erreur personnalisé par défaut, **** BEGIN ASPDescription Example Script **** <% ' This script demonstrates the use of the ASPDescription ' property of the ASPError object. Dim objMyASPError Set objMyASPError = Server.GetLastError( ) Response.Write "The value of the ASPDescription property is " & _ objMyASPError.ASPDescription %> **** END ASPDescription Example Script **** Lorsque vous exécutez les scripts de génération d'erreur, le script ASPDescription précédent génère les trois réponses suivantes : Script de génération d'erreur #1 : The value of the ASPDescription property is [EMPTY] Script de génération d'erreur #2 : The value of the ASPDescription property is The Include file name must be specified using either the File or Virtual attribute. Script de génération d'erreur #3 : The value of the ASPDescription property is [EMPTY] |
|
Remarques | |
Comme ASPCode, la propriété ASPDescription n'est utile que pour les erreurs d'interprétation spécifique à ASP. La propriété Description de l'objet ASPError fournit presque toujours les mêmes informations ou des informations plus complètes sur l'erreur la plus récente. |
|
Category | |
objASPError.Category | |
La propriété Category contient une chaîne spécifiant le type de l'erreur qui est survenue : spécifique à IIS, au langage de script ou au composant. |
|
Paramètres | |
Aucun |
|
Exemple | |
Cet exemple reprend les scripts de génération d'erreur apparaissant à la fin de la section Commentaires/Dépannage. Il suppose que vous avez ajouté le code d'exemple suivant au script d'erreur personnalisé par défaut, **** BEGIN Category Example Script **** <% ' This script demonstrates the use of the Category ' property of the ASPError object. Dim objMyASPError Set objMyASPError = Server.GetLastError( ) Response.Write "The value of the Category property is " & objMyASPError.Category %> **** END Category Example Script **** Lorsque vous exécutez les scripts de génération d'erreur, ce script génère les trois réponses suivantes : Script de génération d'erreur #1 : The value of the Category property is Microsoft VBScript compilation Script de génération d'erreur #2 : The value of the Category property is Active Server Pages Script de génération d'erreur #3 : The value of the Category property is Microsoft VBScript runtime |
|
Remarques | |
La propriété Category vous permet d'identifier l'emplacement de l'erreur plus rapidement. |
|
Column | |
objASPError.Column | |
La propriété Column contient une valeur Long indiquant la colonne de caractères spécifique dans laquelle apparaît le premier caractère du code générant l'erreur. |
|
Paramètres | |
Aucun |
|
Exemple | |
Cet exemple reprend les scripts de génération d'erreur apparaissant à la fin de la section Commentaires/Dépannage. Il suppose que vous avez ajouté le code suivant au script d'erreur personnalisé par défaut, **** BEGIN Column Example Script **** <% ' This script demonstrates the use of the Column ' property of the ASPError object. Dim objMyASPError Set objMyASPError = Server.GetLastError( ) Response.Write "The value of the Column property is " & objMyASPError.Column %> **** END Column Example Script **** Lorsque vous exécutez les scripts de génération d'erreur, le script Column précédent génère les trois réponses suivantes : Script de génération d'erreur #1 : The value of the Column property is 19 Script de génération d'erreur #2 : The value of the Column property is -1 Script de génération d'erreur #3 : The value of the Column property is -1 |
|
Remarques | |
La propriété Column vous aide à localiser la syntaxe incorrecte dans votre code. Toutefois, si l'erreur est spécifique à ASP, ou si l'emplacement où survient l'erreur ne contient pas de code syntaxiquement incorrect, cette valeur est de -1 et, de ce fait, d'usage limité. |
|
Description | |
objASPError.Description | |
La propriété Description est une chaîne décrivant la dernière erreur survenue. En général, cette propriété fournit plus de détails et est plus utile que la propriété ASPDescription associée, sauf lorsqu'il s'agit d'une erreur spécifique d'interprétation ASP. |
|
Paramètres | |
Aucun |
|
Exemple | |
Cet exemple reprend les scripts de génération d'erreur apparaissant à la fin de la section Commentaires/Dépannage. Il suppose que vous avez ajouté le code suivant au script d'erreur personnalisé par défaut, **** BEGIN Description Example Script **** <% ' This script demonstrates the use of the Description ' property of the ASPError object. Dim objMyASPError Set objMyASPError = Server.GetLastError( ) Response.Write "The value of the Description property is " & objMyASPError.Description %> **** END Description Example Script **** Lorsque vous exécutez les scripts de génération d'erreur, le script Description précédent génère les trois réponses suivantes : Script de génération d'erreur #1 : The value of the Description property is Expected end of statement Script de génération d'erreur #2 : The value of the Description property is Missing File or Virtual attribute Script de génération d'erreur #3 : The value of the Description property is Division by zero |
|
Remarques | |
La valeur de la propriété Description fournit en général plus de détails que les autres propriétés de l'objet ASPError. Toutefois, comme les autres propriétés, elle est peu utile aux utilisateurs de votre application ASP. Par conséquent, il est essentiel que les explications que vous fournissez sur la cause de l'erreur soient complètes et utiles au niveau de l'utilisateur. En fin de chapitre, vous trouverez un exemple de script |
|
File | |
objASPError.File | |
La propriété File indique le chemin d'accès complet du fichier contenant le code de génération d'erreur. Le nom de fichier contient le chemin d'accès complet du fichier à partir de la racine Web. |
|
Paramètres | |
Aucun |
|
Exemple | |
Cet exemple reprend les scripts de génération d'erreur apparaissant à la fin de la section Commentaires/Dépannage. Il suppose que vous avez ajouté le code suivant au script d'erreur personnalisé par défaut, **** BEGIN File Example Script **** <% ' This script demonstrates the use of the File ' property of the ASPError object. Dim objMyASPError Set objMyASPError = Server.GetLastError( ) Response.Write "The value of the File property is " & objMyASPError.File %> **** END File Example Script **** Lorsque vous exécutez les scripts de génération d'erreur, le script File précédent génère les trois réponses suivantes : Script de génération d'erreur #1 : The value of the File property is /errorgen1.asp Script de génération d'erreur #2 : The value of the File property is /errorgen2.asp Script de génération d'erreur #3 : The value of the File property is /errorgen3.asp |
|
Remarques | |
Notez que le chemin d'accès du fichier est indiqué à partir du chemin d'accès racine du serveur Web, plutôt qu'à partir de la racine de l'application en cours. |
|
Line | |
objASPError.Line | |
La propriété Line est une valeur Long représentant le numéro de la ligne contenant le code de génération d'erreur. |
|
Paramètres | |
Aucun |
|
Exemple | |
Cet exemple reprend les scripts de génération d'erreur apparaissant à la fin de la section Commentaires/Dépannage. Il suppose que vous avez ajouté le code suivant au script d'erreur personnalisé par défaut, **** BEGIN Line Example Script **** <% ' This script demonstrates the use of the Line ' property of the ASPError object. Dim objMyASPError Set objMyASPError = Server.GetLastError( ) Response.Write "The value of the Line property is " & objMyASPError.Line %> **** END Line Example Script **** Lorsque vous exécutez les scripts de génération d'erreur, le script Line précédent génère les trois réponses suivantes : Script de génération d'erreur #1 : The value of the Line property is 11 Script de génération d'erreur #2 : The value of the Line property is 11 Script de génération d'erreur #3 : The value of the Line property is 14 |
|
Remarques | |
Le compte des lignes débute à la première ligne de code ASP et commence par le numéro 1. |
|
Number | |
objASPError.Number | |
La propriété Number contient une valeur Long représentant un code d'erreur renvoyé par un composant COM. Cette valeur Long représente un code d'erreur COM standard. |
|
Paramètres | |
Aucun |
|
Exemple | |
Cet exemple reprend les scripts de génération d'erreur apparaissant à la fin de la section Commentaires/Dépannage. Il suppose que vous avez ajouté le code suivant au script d'erreur personnalisé par défaut, **** BEGIN Number Example Script **** <% ' This script demonstrates the use of the Number ' property of the ASPError object. Dim objMyASPError Set objMyASPError = Server.GetLastError( ) Response.Write "The value of the Number property is " & objMyASPError.Number %> **** END Number Example Script **** Lorsque vous exécutez les scripts de génération d'erreur, ce script génère les trois réponses suivantes : Script de génération d'erreur #1 : The value of the Number property is -2146827263 Script de génération d'erreur #2 : The value of the Number property is -2147467259 Script de génération d'erreur #3 : The value of the Number property is -2146828277 |
|
Remarques | |
Aucune |
|
Source | |
objASPError.Source | |
La propriété Source est une chaîne contenant la ligne de code qui a causé l'erreur la plus récente, si ce code était syntaxiquement incorrect. |
|
Paramètres | |
Aucun |
|
Exemple | |
Cet exemple reprend les scripts de génération d'erreur apparaissant à la fin de la section Commentaires/Dépannage. Il suppose que vous avez ajouté le code suivant au script d'erreur personnalisé par défaut, **** BEGIN Source Example Script **** <% ' This script demonstrates the use of the Source ' property of the ASPError object. Dim objMyASPError Set objMyASPError = Server.GetLastError( ) Response.Write "The value of the Source property is " & objMyASPError.Source %> **** END Source Example Script **** Lorsque vous exécutez les scripts de génération d'erreur, le script Source précédent génère les trois réponses suivantes : Script de génération d'erreur #1 : The value of the Source property is Fir intCounter = 1 to 100 Script de génération d'erreur #2 : The value of the Source property is [EMPTY] Script de génération d'erreur #3 : The value of the Source property is [EMPTY] |
|
Remarques | |
Comme indiqué précédemment, la propriété Source n'est utile que si l'erreur générée est une erreur de syntaxe. Dans le cas contraire, cette propriété apparaît vide. |
|