Tratar errores en sentencias SQL ejecutadas en ASP

0
Tratar errores en sentencias SQL ejecutadas en ASP

Your ads will be inserted here by

Easy Plugin for AdSense.

Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.

Script que nos sirve para saber cómo hacer que las sentencias SQL mal formadas no den errores en las páginas ASP y se puedan tratar para informar al usuario o administrador.

Cómo hacer para que las sentencias SQL mal formadas no den errores en las páginas ASP y se puedan tratar para informar al usuario o administrador.

Vamos a ver un pequeño taller que puede servir para hacer nuestras aplicaciones ASP más completas y compactas. Se trata de evitar un error bastante frecuente en la programación de páginas, que ocurre cuando se intenta ejecutar una sentencia SQL mal formada. En esos casos, el servidor nos informa del error, aunque siempre ofrece información que no sirve de mucho al visitante, incluso despista. Sería preferible que nosotros tratásemos el error e informáramos por nuestra cuenta al usuario, de una manera agradable y clara.

Para ello vamos a realizar un tratamiento de errores en ASP, que evitará que la página se detenga ante un error y nos permita hacer cosas si ocurre.

On error Resume Next
conn.execute(ssql)
if Err<>0 then
‘ realizo acciones para tratar el error
end if

Con la primera línea estamos diciendo a ASP que si ocurre un error no informe de ello, sino que continúe. En la segunda línea ejecutamos una sentencia SQL.

En el siguiente bloque se evalúa la variable de sistema «Err», que almacena un posible error. Si la variable vale cualquier cosa distinto de 0, entonces es que ocurrió un error. Por tanto, en el caso positivo del if podremos realizar cualquier tipo de acción para tratar el error.

Tratar el error de una manera sencilla

Para tratar el error de una manera fácil de implementar, dentro del if podríamos llamar a una función que se encargase de hacer todas las acciones frente a un error.

Esa función podría recibir el error e introducirlo en un log de errores. Podría también informar por correo al administrador y por supuesto, mostrar un mensaje de error claro al visitante.

sub tratar_error_ssql(ssql,mierror)

Your ads will be inserted here by

Easy Plugin for AdSense.

Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.

‘trato el posible error
‘meto la sentencia erronea en un archivo de texto

‘creamos el textstream del archivo
archivo= request.serverVariables(«APPL_PHYSICAL_PATH») & «erroreslog.txt»
set confile = createObject(«scripting.filesystemobject»)
set fich = confile.OpenTextFile (archivo,8)
‘escribo en el archivo
fich.WriteLine(ssql)
fich.WriteLine(Err.Description)
fich.WriteLine(«—————————–«)

‘cerramos el fichero
fich.close()

‘voy a informar al administrador
set obj_mail = server.createObject(«Persits.MailSender»)
asunto_mensaje = «Error SQL en la página»
email_origen_mensaje = «correo@dominio.com»
texto_origen_mensaje = «Empresa»
txt_mail = «Hemos detectado un error. Consulte el log de errores para encontrar descripción.»
txt_mail = txt_mail & VBNEWLINE & VBNEWLINE & ssql
txt_mail = txt_mail & VBNEWLINE & VBNEWLINE & mierror

obj_mail.host = «smtp.dominio.com»
obj_mail.from = email_origen_mensaje
obj_mail.FromName = texto_origen_mensaje
obj_mail.Subject = asunto_mensaje
obj_mail.AddAddress email_alertas
obj_mail.body = txt_mail
‘lo envio
obj_mail.send

‘voy a informar al usuario
response.write «Lo sentimos, pero tu acción no ha podido ser realizada. Ponte en contacto con los administradores para obtener ayuda.»

end sub

Esta función hace todo lo comentado para tratar el error. Primero escribe el log de errores en un fichero de texto, luego envía un correo electrónico al administrador y finaliza mostrando un error al usuario. Está comentada para entenderla mejor y todo lo que hemos realizado (como enviar el email desde ASP o abrir el fichero de texto) lo hemos visto ya en otros talleres de ASP.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies