Hay tres tipos de error principales:
Error de compilación:
Este tipo de error ocurre generalmente debido al problema de sintaxis del código.
El verbo ASP dejó de funcionar debido a un error de compilación.
Error de ejecución
Este error ocurre cuando está listo para ejecutar el ASP.
Por ejemplo: si intenta asignar un valor a una variable, pero está más allá del alcance permitido por la variable.
Error lógico
Los errores lógicos son los más difíciles de detectar.
Esto requiere que revisemos a fondo nuestro código.
Debido a que los errores de compilación generalmente ocurren junto con errores lógicos y generalmente se pueden mostrar, lo que nos preocupa es el error de operación. Termina el funcionamiento del ASP y deja un montón de texto hostil para el usuario.
Entonces, ¿cómo lidiamos con los errores de operación? ? Echemos un vistazo primero. En el reanudación de errores, se producirán todos los errores en ejecución.
Aquí hay un código de error:
Proveedor de Microsoft OLE DB para controladores ODBC Error 80004005
[Microsoft] [ODBC Manager del controlador] Nombre de fuente de datos no encontrado y no se especificó el controlador predeterminado
/test.asp, línea 60
Cuando usamos la declaración de reanudación de error ON en la parte superior del programa, todos los errores se ignorarán y el programa ejecutará automáticamente la siguiente declaración. De esta manera, el programa se ejecutará completamente y el usuario no verá el mensaje de error después de que ocurra un error. Pero también hay desventajas de esta manera, es decir, si el programa no se ejecuta como lo imagina, será difícil para usted averiguar qué está mal, por lo que debe lidiar con los errores cuando sea necesario.
Errores de manejo
En ASP, la mejor manera de lidiar con los errores es poner el código en la parte inferior del programa para manejar los errores. También recomiendo usar búferes en cada programa ASP. De esta manera, si ocurre un error, la página se detendrá y el contenido de la página se borrará, de modo que el usuario no vea el mensaje de error y ¡habrá menos quejas sobre usted! Aquí hay un ejemplo:
<%@ Idioma = vBscript%> <%'set buffer a verdadero respuesta.buffer = true' Inicie el manejo de errores en el error de error Siguiente%> <%'Manejo de errores si Err.Number <> 0 luego' Borrar la respuesta de la página. Mensaje de error de visualización para el usuario%> <html> <fead> <title> </title> </head> <body bgcolor =#c0c0c0> <font face = arial> se produjo un error en la ejecución de esta página ASP <br> Informe lo siguiente Información al escritorio de soporte <p> <b> Objeto de error de página </b> <br> Número de error: < %= err.number %> <br> Mensaje de error: < %= ERR.Description %> <br> Error Mensaje: < %= Err.Description %> <br> Se produjo un error: < %= err.source %> <br> Línea de error: < %= err.line %> <br> </font> </body> </Html> <%end if%>
Como puede ver anteriormente, primero me puse en el currículum de error a continuación, para que un error no afecte la ejecución del programa.
Manejo de errores y base de datos
La ejecución de agregar bases de datos al manejo de errores es muy complicada. Si tenemos un programa con muchos comandos para agregar registros a la base de datos, si Insertar/Update se ejecuta en la parte inferior del programa, si nuestro error ocurre nuevamente antes, ¡entonces terminará! Agregaremos un mensaje de error a la base de datos. Debido a que usamos en el currículum de error a continuación, ¡todos los errores fueron ignorados! Incluso si hay un error antes, el programa aún agregará datos a la base de datos.
Para evitar esta situación, primero tenemos que hacer algunos trucos.
Si err.number = 0 y objconnection.errors.count = 0 entonces 'La instrucción se puede ejecutar aquí porque no hay ningún error establecido rStresults = dbdata.execute (txtsql) end if si
Soluciones más avanzadas
Cuando ocurre un error, también puede mostrar más mensajes de error. A continuación se muestra un ejemplo de manejo de errores de base de datos y de página. (Dado que creo que el inglés es más difícil de hablar en algunos lugares, no hay traducción).
< % If Err.Number <> 0 entonces respuesta. Caso de selección Caso Err.Number Case 8 'Especifique el número de error' Caso más aquí 'Error general si ISObject (objconnection) luego si objconnection.errors.count> 0 entonces %> << B> Objeto de conexión de base de datos </b> <%para intloop = 0 a objconnection.errors.count - 1%> Error NO: <%= objconnection.errors (intloop) .number %> <br> Descripción: <%= objconnection.errors (intloop) .Description%> <br> Fuente: <%= objconnection.errors (intloop) .surce%> <br> sqlstate: <%= objconnection.errors ( intloop) .sqlState %> <br> nationalError: < %= objconnection.errors (intloop) .nativeError %> <p> < %siguiente final IF final si if Err.Number <> 0 entonces %> <b> Error de página Objeto </b> <br> número de error <%= err.number%> <br> Descripción del error <%= err.description%> <br> fuente <%= err.esurce%> <br> Linenumber <%= Err.line %> <p> < %end if End Seleccione End If %>
¡El ejemplo anterior nos permite lidiar con muchos problemas que ocurren en la base de datos, que también se usa comúnmente en nuestra programación diaria! También debemos ver esa instrucción Select Case, que nos permite manejar errores específicos.
Redirigir y manejo de errores
Una cosa a la que debemos prestar atención es el objeto de redirección que a menudo usamos. Entonces tenemos que lidiar con eso antes de girar, como sigue:
Si err.number = 0 y objconnection.errors.count = 0 entonces respuesta.plain respuesta.redirect? Lt; url aquí>?
Hacer que el código sea más ordenado
Para hacer que el código sea más ordenado, primero ubique el archivo manejado por error en un archivo contener. De esta manera, puede usarlo en cualquier archivo. Esto también es conveniente para modificar.
Agregue (después de la declaración de idioma, por supuesto) el currículum de error en la siguiente declaración en la parte superior de su programa.
Realice la comprobación de errores antes de ejecutar SQL.
También se requirió manejo de errores antes de usar redirección.
Le permite manejar errores que contienen archivos en la parte superior del código