Plusieurs méthodes de traitement générales pour les pièges d'erreur ASP

2019-12-22

Il existe trois principaux types d'erreurs:
Erreur de compilation:
Ce type d'erreur est généralement un problème de syntaxe du code.
ASP a cessé de fonctionner en raison d'erreurs de compilation.

Erreur de fonctionnement
Cette erreur s'est produite lorsque vous vous prépariez à exécuter ASP.
Par exemple: si vous essayez d'affecter une valeur à une variable, mais qu'elle est en dehors de la plage autorisée par la variable.

Erreurs logiques
Les erreurs logiques sont les plus difficiles à trouver. Ce type d'erreur est souvent une erreur structurelle qui ne peut pas être détectée par un ordinateur.
Cela nous oblige à parcourir notre code à fond.
Étant donné que les erreurs de compilation se produisent généralement avec des erreurs logiques et peuvent généralement être affichées, tout ce qui nous préoccupe, c'est une erreur d'exécution. Tout cela met fin au fonctionnement d'ASP et laisse un tas de texte très hostile à l'utilisateur.

Alors, comment traitons-nous les erreurs d'exécution! ? Jetons un coup d'œil d'abord. La seule commande d'erreur que ASP nous fournit est On Error Resume Next (rappelez aux débutants ici, il n'y a que On Error Resume Next dans ASP, il n'y a pas On Error Resume Goto) Si l'instruction Error Resume Next, toutes les erreurs en cours d'exécution se produisent, cela est fatal, puis un code d'erreur "s'affiche" à l'utilisateur et le programme ASP s'arrête.

Voici un code d'erreur:
 
  Erreur 80004005 du fournisseur Microsoft OLE DB pour les pilotes ODBC
  [Microsoft] [ODBC Driver Manager] Nom de la source de données introuvable et aucun pilote par défaut spécifié
  /test.asp, ligne 60
 
 
Lorsque nous utilisons l'instruction On Error Resume Next en haut du programme, toutes les erreurs seront ignorées et le programme exécutera automatiquement l'instruction suivante. De cette façon, le programme sera complètement exécuté et l'utilisateur ne verra pas le message d'erreur après une erreur. Mais cela a également l'inconvénient que si le programme n'est pas exécuté comme vous l'imaginez, il sera difficile de trouver ce qui s'est mal passé, vous devez donc traiter les erreurs si nécessaire.
 
Gestion des erreurs
Dans ASP, la meilleure façon de gérer les erreurs est de mettre du code en bas du programme pour gérer les erreurs. Je recommande également d'utiliser des tampons dans chaque programme ASP. Dans ce cas, si une erreur se produit, la page s'arrêtera et le contenu de la page sera effacé, de sorte que les utilisateurs ne verront pas le message d'erreur et qu'il y aura moins de plaintes à votre sujet! Voici un exemple:


 <% @ LANGUAGE = "VBScript"%>
  <% 'Définir le tampon sur True
    Response.Buffer = True
    'Lancer la gestion des erreurs
    En cas d'erreur Reprendre ensuite
  %>
  <% 'Gestion des erreurs
    Si Err.Number <> 0 Then
  'Effacer la page
  Response.Clear
     'Afficher le message d'erreur à l'utilisateur
   %>
   
  
   </ TITLE>
  </ HEAD>
     <BODY BGCOLOR = "# C0C0C0">
  <FONT FACE = "ARIAL"> Une erreur s'est produite lors de l'exécution de cette page ASP <BR>
  Veuillez signaler les informations suivantes au service d'assistance <P>
      <B> Objet d'erreur de page </ B> <BR>
      Numéro d'erreur: <% = Err.Number%> <BR>
      Message d'erreur: <% = Err.Description%> <BR>
      Fichier d'erreur: <% = Err.Source%> <BR>
      Ligne d'erreur: <% = Err.Line%> <BR>
   </ POLICE>
  </ CORPS>
   </ HTML>
 
  <% End If%>
 </ pré>
 <br>
 <p> Comme vous l'avez vu ci-dessus, j'ai d'abord réglé sur On Error Resume Next pour que les erreurs n'affectent pas l'exécution du programme.  <br />
  <br />
 Gestion des erreurs et base de données <br />
 L'ajout de l'exécution de la base de données à la gestion des erreurs est compliqué.  Si nous avons un programme avec de nombreuses commandes pour ajouter des enregistrements à la base de données, si l'insertion / mise à jour est effectuée tout en bas du programme, si nous avons une erreur avant, alors nous avons terminé!  Nous ajouterons un message d'erreur à la base de données.  Parce que nous avons utilisé On Error Resume Next, toutes les erreurs ont été ignorées!  Même si quelque chose ne va pas, le programme ajoutera toujours des données à la base de données.  <br />
 Afin d'éviter cette situation, nous devons d'abord faire quelques astuces, la bonne méthode est la suivante: </p>
 <br>
 <pre class = "brush: vb;">
  Si Err.Number = 0 Et objConnection.Errors.Count = 0 Then
 
  «L'instruction peut être exécutée ici car il n'y a pas d'erreur
  Définissez rstResults = dbData.Execute (txtSql)
  Fin If </ pre>
 <br>
 <p> Méthodes plus avancées <br />
 Lorsqu'une erreur se produit, vous pouvez également afficher plus de messages d'erreur.  Voici un exemple de gestion des erreurs de base de données et de page en même temps. Avec lui, nous pouvons trouver toutes les erreurs dans notre programme.  (Parce qu'il y a des endroits où je pense que l'anglais peut mieux parler, donc il n'y a pas de traduction).  </p>
 <p> </p>
 <br>
 <pre class = "brush: vb;">
 <%
  Si Err.Number <> 0 Then
       Response.Clear
       Sélectionnez le numéro d'erreur de cas
   Cas 8 'Numéro incorrect spécifié
  'Gérez les erreurs personnalisées ici
 
         Erreur générale de Case Else
 
    Si IsObject (objConnection) Alors
        Si objConnection.Errors.Count> 0 Then
  %>

               <B> Objet de connexion à la base de données </ B>
 
  <% For intLoop = 0 To objConnection.Errors.Count-1%>
 
              Erreur no: <% = objConnection.Errors (intLoop) .Number%> <BR>
              Description: <% = objConnection.Errors (intLoop) .Description%> <BR>
              Source: <% = objConnection.Errors (intLoop) .Source%> <BR>
              SQLState: <% = objConnection.Errors (intLoop) .SQLtate%> <BR>
              NativeError: <% = objConnection.Errors (intLoop) .NativeError%> <P>
 
  <% Suivant
  Fin si
  
        Fin si
       Si Err.Number <> 0 Then
  %>
 
            <B> Objet d'erreur de page </ B> <BR>
            Numéro d'erreur <% = Err.Number%> <BR>
            Description de l'erreur <% = Err.Description%> <BR>
         Source <% = Err.Source%> <BR>
     LineNumber <% = Err.Line%> <P>
 
  <% Fin Si
     Fin de sélection
   Fin si
  %> </ pré>
 <br>
 <p> L'exemple ci-dessus nous permet de traiter de nombreux problèmes dans la base de données, ceci est également couramment utilisé dans notre programmation quotidienne!  Nous devrions également voir cette instruction Select Case, qui nous permet de gérer des erreurs spécifiques.  <br />
 Redirection et gestion des erreurs <br />
 Une chose à laquelle nous devons prêter attention est l'objet de redirection que nous utilisons couramment. Si un objet de redirection apparaît dans une page, la gestion des erreurs n'a aucun sens.  Nous devons donc y faire face avant de tourner, comme suit:
 <br>
 <pre class = "brush: vb;">
  Si Err.Number = 0 Et objConnection.Errors.Count = 0 Then
  
  Response.Clear
  Response.Redirect? Lt; URL Here>?
 
  Fin If </ pre>
 <br>
 <p> Rendez votre code soigné <br />
 Pour rendre le code plus ordonné, placez d'abord le fichier de gestion des erreurs dans un fichier include.  De cette façon, vous pouvez l'utiliser dans n'importe quel fichier.  Cette modification est également pratique.  <br />
 Ajoutez l'instruction On Error Resume Next en haut de votre programme (bien sûr après la déclaration de langue).  <br />
 Effectuez une vérification des erreurs avant d'exécuter SQL.  <br />
 Vous devez également gérer la gestion des erreurs avant d'utiliser des redirections.  <br />
 Vous permet de gérer les mauvais fichiers d'inclusion en haut du code </p></div>
 <link rel="stylesheet" type="text/css" href="js/shCore.css">
<link rel="stylesheet" type="text/css" href="js/shThemeDefault.css">
    <div style="clear: both;"></div>

</div>



<!-- Matomo -->
<script type="text/javascript">
  var _paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="//count.flyfishcourse.com/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '15']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo Code -->


<div id="bottom">www.xd1998.com@2001-2030Partage De Technologie</div>
 
</body>

</html>