ASP est si simple que de nombreux développeurs ne pensent pas à la gestion des erreurs. La gestion des erreurs peut rendre votre application plus logique. J'ai vu de nombreux sites Web commerciaux écrits en ASP et la plupart d'entre eux ignorent la gestion des erreurs. Mauvais type.
Il existe trois principaux types d'erreurs :
1. Erreur de compilation :
Ce type d'erreur se produit généralement en raison de problèmes de syntaxe dans le code. ASP s'est arrêté en raison d'une erreur de compilation.
2. Erreur d'exécution :
Cette erreur se produit lorsque vous vous préparez à exécuter ASP. Par exemple : si vous essayez d’attribuer une valeur à une variable, mais qu’elle se situe en dehors de la plage autorisée de la variable.
3. Erreur logique :
Les erreurs logiques sont les plus difficiles à détecter. Il s'agit souvent d'une erreur structurelle qui ne peut pas être détectée par les ordinateurs. Cela nous oblige à inspecter notre code de haut en bas.
Étant donné que les erreurs de compilation se produisent généralement en même temps que les erreurs logiques et peuvent généralement être affichées, nous ne nous préoccupons que des erreurs d'exécution. Tout cela met fin au fonctionnement d'ASP et laisse un tas de texte très peu convivial pour l'utilisateur. Alors, comment gérer les erreurs d’exécution ?
Type d'erreur :
ADODB.Champ (0x800A0BCD)
Soit BOF ou EOF est TRUE, soit l'enregistrement actuel a été supprimé et l'opération requise nécessite un enregistrement actuel.
Raison : lorsque vous avez utilisé SQL pour rechercher des enregistrements dans la base de données, le résultat de la recherche était vide et vous n'avez pas géré la situation des enregistrements vides.
Solution : 1. Si vous ne pensez pas que le résultat de la recherche est vide, vous devez alors déterminer si votre instruction SQL est correcte ; 2. Si elle est effectivement vide, alors vous devez ajouter « if rs.eof then » ou « do while » pas rs.eof "Des déclarations comme " sont utilisées pour gérer la situation eof.
Type d'erreur :
(0×80020009)
Un accident s'est produit.
Raison : lors de l'utilisation de SQL pour rechercher des enregistrements de base de données, le résultat de la recherche était vide et vous avez appelé des enregistrements tels que rs("aa") dans le code suivant.
Solution : soit la même chose que ci-dessus, plus le jugement et le traitement de rs.eof, soit votre instruction SQL est erronée, ce qui fait que l'enregistrement n'est pas trouvé et que l'enregistrement de rs("aa") ne peut pas être utilisé ultérieurement.
Type d'erreur :
Pages de serveur actives, ASP 0126 (0×80004005)
Le fichier inclus « xxx.asp » est introuvable.
Raison : Comme l'indique le message d'erreur, ce fichier d'inclusion n'existe pas.
Solution : Si vous êtes sûr que ce fichier existe, alors votre chemin est mal écrit. Par exemple, son chemin par rapport au répertoire racine du site Web doit être inc/xxx.asp, puis inc/xxx.asp doit être écrit dans include. , et pas seulement xxx.asp. Pièce jointe : la façon d’écrire include est :
Type d'erreur :
Fournisseur Microsoft OLE DB pour les pilotes ODBC (0 × 80004005)
[Microsoft][Pilote ODBC Microsoft Access] L'opération doit utiliser une requête pouvant être mise à jour.
Raison : Ceci est très courant sur les serveurs XP et constitue un problème de configuration du serveur ou un problème d'autorisations utilisateur.
Solution : Si l'erreur concerne uniquement le débogage sur cette machine, cliquez avec le bouton droit sur le dossier où se trouve le site Web, cliquez sur "Partage et sécurité...", cliquez sur Ajouter... dans "Sécurité", écrivez à tout le monde, puis activez cette option. de l'utilisateur Les autorisations sont toutes, c'est-à-dire que toutes sauf la première sont vérifiées. Après confirmation, actualisez et elles peuvent être utilisées. (Remarque : si vous ne trouvez pas l'option "Sécurité", cliquez sur "Outils" dans n'importe quel dossier, puis sur "Options des dossiers" - "Affichage" et décochez la colonne "Utiliser le partage de fichiers simple". Peut)
Type d'erreur :
Erreur du compilateur Microsoft VBScript (0x800A0401)
Déclaration non terminée
Raison : erreur de syntaxe.
Solution : Vérifiez les lignes demandées par le système. Si l'invite se trouve sur la dernière ligne de cette page, il est très probable que l'instruction if ait oublié d'écrire "end if" et que l'instruction select ait oublié d'écrire "end select". est nécessaire, ce qui empêche le serveur de le trouver. À la fin de l'instruction, l'erreur doit être affichée sur la dernière ligne.
Type d'erreur :
Moteur de base de données Microsoft JET (0x80040E10)
Au moins un paramètre n'a aucune valeur spécifiée.
Raison : lors de l'écriture d'instructions SQL, nous appelons souvent certains paramètres, et il est possible que l'un de ces paramètres n'ait pas reçu de valeur.
Solution : Vérifiez si la valeur de chaque paramètre est effectivement transmise. Il est très probable que certains paramètres soient réellement "". Bien entendu, il n'est pas possible d'indexer la base de données avec de tels paramètres.
Type d'erreur :
Moteur de base de données Microsoft JET (0x80040E37)
Le moteur de base de données Microsoft Jet ne trouve pas la table d'entrée ou la requête « AA ». Déterminez s'il existe et si son nom est correctement orthographié.
Raison : Ce tableau n'existe pas.
Solution : Peut-être avez-vous écrit le mauvais nom de table ou vous êtes-vous connecté à la mauvaise base de données ? Vérifiez-le attentivement à nouveau !
Type d'erreur :
Erreur d'exécution Microsoft VBScript (0x800A000D)
Incompatibilité de type : /'[chaîne : ""]/"
Raison : c'est parce que le type de votre variable est une chaîne, mais vous l'utilisez comme un nombre ou un autre type.
Solution : Par exemple, si vous avez besoin d'une variable numérique pour calculer des opérations mathématiques telles que i=i+1, vous devez utiliser cint (nom de la variable) sur la variable pour forcer la conversion en type numérique. La comparaison entre les deux variables doit également être effectuée. du même type, il doit donc également être converti, la méthode est la même que ci-dessus.
Type d'erreur :
Moteur de base de données Microsoft JET (0x80040E07)
Incompatibilité de type de données dans l’expression standard.
Raison : Généralement, une erreur se produit lors de l'écriture d'instructions SQL, c'est-à-dire que les variables numériques et chaîne sont confondues.
Solution : C'est facile à faire. Essayez de supprimer les guillemets simples des variables SQL auxquelles "" a été ajouté, ou d'ajouter "" aux variables qui étaient initialement considérées comme des nombres, puis vérifiez l'effet.
Type d'erreur :
Erreur d'exécution de Microsoft VBScript (0x800A01A8)
Objet manquant :"
Raison : Il est très probable que vous n’ayez pas défini l’objet rs.
Solution : N'oubliez pas d'écrire set rs=server.CreateObject("adodb.recordset"), pour pouvoir définir l'objet ou ne pas utiliser directement cette méthode d'écriture, il sera beaucoup plus pratique d'utiliser conn. exécuter("SQL") directement, et il n'est pas nécessaire de prendre en compte les problèmes d'objet.
Type d'erreur :
Erreur d'exécution Microsoft VBScript (0x800A005E)
Utilisation invalide Null : 'Remplacer'
Raison : Une utilisation non valide des fonctions est courante, y compris Split, etc. La raison est relativement simple, car le contenu de votre Replace est vide.
Solution : Il est préférable d'ajouter un IF pour vérifier si le contenu que vous souhaitez remplacer est vide.
Erreur du compilateur Microsoft VBScript Erreur '800a03f6'
Le pilote ODBC ne prend pas en charge la propriété requise.
Raison : Cela peut être dû au fait qu'aucun nom de champ n'apparaît dans l'instruction SQL. Généralement, le nom du champ ou le mot-clé sql est mal écrit. Il est également possible que la table à ouvrir par SQL ait été ouverte en exclusivité.
Solution : vérifiez chaque nom de champ et chaque mot-clé qui apparaît dans l'instruction SQL
Erreur du fournisseur Microsoft OLE DB pour les pilotes ODBC « 80004005 »
L'utilisateur « Admin » sur la machine « HDZC-3JQSKBWO02 » dispose d'un verrouillage exclusif sur la table de données « order_detail ».
Raison : La table requise par SQL est ouverte sous forme de conception de table par accès
Solution : désactiver la conception de la table
Erreur du compilateur Microsoft VBScript Erreur '800a03f6'
L'élément n'a pas été trouvé dans la collection correspondant au nom ou au numéro ordinal requis.
Raison : aucun nom de champ n'apparaît dans l'instruction sql. Il s'agit généralement d'une erreur d'écriture du nom de champ ou du mot-clé sql.
Solution : vérifiez chaque nom de champ qui apparaît dans l'instruction SQL
Erreur ADODB.Recordset '800a0e78'
Aucune opération n'est autorisée lorsque l'objet est fermé.
Raison : rs.close a été utilisé avant l’instruction rs.open sql,conn,3,3 pour fermer l’objet rs.
Solution : Supprimez le rs.close précédent
Erreur du fournisseur Microsoft OLE DB pour les pilotes ODBC '80040e14'
[Microsoft] [Pilote Microsoft Access ODBC] Erreur de syntaxe (opérateur manquant) dans l'expression de requête « oid form classtree où oid = 25′.
Raison : Il y a une erreur de mot-clé ou de sous-paragraphe anglais écrit illégalement dans l'instruction SQL.
Solution : tapez l'instruction SQL, puis comparez-la mot par mot pour découvrir les erreurs d'écriture.
L'opération nécessite une requête pouvant être mise à jour
Réponse : Vérifiez si le fichier de bibliothèque est en lecture seule.
Réponse 2 : Le jeu d'enregistrements triés (triés par) (rs) ne permet pas les opérations de mise à jour (rs.update)
3219 Opération non autorisée sur ce contenu
Réponse 3 : si les propriétés du champ de base de données sont définies pour autoriser l'insertion de valeurs nulles.
adErrInvalidArgument 3001
0x800A0BB9
L'application utilise un paramètre de type incorrect, situé en dehors de la plage acceptable ou en conflit avec d'autres paramètres.
adErrNoCurrentRecord 3021
0x800A0BCD
BOF ou EOF est True, ou l'enregistrement actuel a été supprimé. L'opération demandée par l'application nécessite l'enregistrement courant.
adErrIllegalOpération 3219
0x800A0C93
L'opération demandée par l'application n'est pas autorisée dans ce contexte
adErrInTransaction 3246
0x800A0CAE
L'application ne peut pas fermer explicitement l'objet Connection pendant une transaction.
adErrFeatureNotAvailable 3251
0x800A0CB3
Le fournisseur ne prend pas en charge l'opération demandée par l'application.
adErrItemNotFound 3265
0x800A0CC1
ADO ne trouve pas d'objet dans la collection qui correspond au nom ou à la référence de séquence demandée par l'application.
adErrObjectInCollection 3367
0x800A0D27
Impossible d'ajouter, l'objet est déjà dans la collection.
adErrObjectNotSet 3420 0x800A0D5C L'objet référencé par l'application ne pointe plus vers un objet valide.
adErrDataConversion 3421
0x800A0D5D
L'application a utilisé un type valeur qui n'est pas adapté à l'opération en cours.
adErrObjectFermé 3704
0x800A0E78
Si l'objet est fermé, l'opération demandée par l'application n'est pas autorisée.
adErrObjectOpen 3705
0x800A0E79
Si l'objet est ouvert, l'opération demandée par l'application n'est pas autorisée.
adErrProviderNotFound 3706
0x800A0E7A
ADO ne trouve pas le fournisseur spécifié.
adErrBoundToCommand 3707
0x800A0E7B
L'application ne peut pas utiliser l'objet Command pour modifier la propriété ActiveConnection de l'objet Recordset en ses données source.
adErrInvalidParamInfo 3708
0x800A0E7C
L'application définit l'objet Parameter de manière incorrecte.
adErrInvalidConnection 3709
0x800A0E7D
Une application demande une opération sur un objet en faisant référence à un objet Connection fermé ou non valide.
ADODB.Field Error '80020009' Soit BOF ou EOF est 'true', soit l'enregistrement actuel a été supprimé et l'opération requise nécessite un enregistrement actuel.
La solution est la suivante : cette erreur est provoquée par le fait que les enregistrements SELECT et DELETE n'existent pas ou qu'il n'y a aucun enregistrement dans la bibliothèque. Vérifiez donc l'instruction SQL pour voir si les conditions pour SELECT et DELETE sont correctes. Il est également préférable de le faire. SÉLECTIONNEZ un enregistrement ou utilisez On avant DELETE. Erreur Reprendre Suivant…….Sur Erreur Aller à 0 pour gérer. Si c'est parce qu'il n'y a pas d'enregistrement dans la bibliothèque, ajoutez simplement un jugement If objRecordSet.Eof Et objRecordSet.Bof Alors Parce que lorsque le RecordSet est ouvert, le pointeur pointe vers la fin par défaut, vous pouvez donc simplement utiliser If objRecordSet. Eof Alors pour juger.
ActiveServerPages, ASP0126 (0 × 80004005) -> fichier d'inclusion introuvable
MicrosoftOLEDBProviderforODBCDrivers (0x80040E21) -> Erreur d'instruction SQL (incompatibilité de type de données ou erreur de nom de table (nom de champ) ou la table est en cours d'édition, ou la table n'existe pas dans la base de données ouverte par conn)
MicrosoftOLEDBProviderforODBCDrivers (0x80040E14) -> Erreur d'instruction SQL (erreur de nom de champ ou incompatibilité de type de données)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E07) -> erreur d'instruction SQL (le type de champ à insérer ou à mettre à jour ne correspond pas au type de données de la variable)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E57) -> erreur d'instruction SQL (débordements de données à insérer ou à mettre à jour)
MicrosoftOLEDBProviderforODBCDrivers (0x80040E10) -> Erreur d'instruction SQL (le nom du champ de mise à jour ou le type de données à mettre à jour est incorrect)
MicrosoftOLEDBProviderforODBCDrivers(0×80004005)–>erreur d'instruction SQL (la valeur du champ à insérer ou à mettre à jour ne peut pas être nulle)
MicrosoftOLEDBProviderforODBCDrivers (0×80004005) ->Erreur d'ouverture de la base de données, aucune base de données trouvée dans le répertoire spécifié
MicrosoftOLEDBProviderforODBCDrivers (0x80040E37) -> Aucune table trouvée
Erreur d'exécution MicrosoftVBscript (0x800A000D) -> Erreur de référencement de la variable rs (l'objet rs est fermé ou non défini)
Erreur d'exécution MicrosoftVBscript (0x800A01C2) -> erreur de script vbscript (erreur d'instruction vbscript)
Erreur d'exécution MicrosoftVBscript (0x800A0006) -> erreur de script vbscript (erreur de débordement)
Erreur du compilateur MicrosoftVBscript (0x800A040E) -> boucle manquante
Erreur du compilateur MicrosoftVBscript (0x800A03EA) -> manquant si ou endif
Erreur du compilateur MicrosoftVBscript (0x800A03EE) -> Déclaration non terminée (manquant ")")
Erreur du compilateur MicrosoftVBscript (0x800A03F6) -> erreur d'instruction if (fin manquante)
Erreur d'exécution MicrosoftVBscript (0x800A005B) -> l'ensemble est manquant
Erreur d'exécution MicrosoftVBscript (0x800A0005) -> La variable n'est pas définie
Erreur du compilateur MicrosoftVBscript (0x800A03F9) -> si l'instruction est manquante, alors
Erreur du compilateur MicrosoftVBscript (0x800A0411) -> erreur de définition de l'instruction dim
ADODB.Recordset(0x800A0BB9)–>Erreur d'instruction SQL (l'instruction SQL ou l'instruction conn n'est pas définie ou une erreur se produit lors de l'attribution d'une valeur à un attribut rs)
ADODB.Recordset(0x800A0CC1)–>erreur d'objet rs (l'objet rs lui-même n'existe pas ou fait référence de manière incorrecte à un nom de champ inexistant)
ADODB.Recordset(0x800A0BCD)–>erreur d'objet rs (il n'y a aucun enregistrement dans le jeu d'enregistrements mais le jeu d'enregistrements est exploité)
ADODB.Recordset(0x800A0E78)–>erreur d'objet rs (le jeu d'enregistrements n'existe pas, l'instruction rs.open est manquante)
ADODB.Recordset(0x800A0CC1) -> erreur d'objet rs (faisant référence à un nom de champ inexistant)
ADODB.Recordset (0x800A0E7D) -> erreur de définition de connexion
ADODB.Recordset(0x800A0CB3)–>La base de données est ouverte en mode lecture seule et les données ne peuvent pas être mises à jour.