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>