ASP - Control de errores bajo ASP

 
Vista:

Control de errores bajo ASP

Publicado por Eduard Pascual (3 intervenciones) el 03/08/2004 17:53:59
Tengo una página asp (VBS) que me envía un formulario a una dirección de correo. La página pone la dirección de correo del usuario (solicitada en el formulario) como remitente. La página no había dado ningún problema hasta que, ante una dirección e-mail mal tecleada, mostró el siguiente mensaje:

jmail.SMTPMail error '8000ffff'

The message was undeliverable. All servers failed to receive the message

/apartment/booking.asp, line 224

Lo que querría es capturar el error y comprobar el código de éste, para mostrar mensajes personalizados en los errores de causa conocida (en el caso anterior, querría poner un mensaje que informe al usuario de que se requiere la dirección e-mail)
Aunque he intentado usar el On Error ..., de VBasic, el servidor produce un error 500 incluso cuando los datos son correctos.
Éste es el código sobre el que trabajo:
<%
Set JMail = Server.CreateObject("JMail.SMTPMail")
JMail.ServerAddress = "mailhub.registeredsite.com"
JMail.Sender = request("email")
JMail.Subject = "Holasitges.com/apartments - Booking form"
JMail.AddRecipientex "[email protected]", "infoapart"
Cuerpo = "Personal info" & vbCrLf & request("Mr_Ms") & " " & request("Family_Name") & ", " & request("First_Name") & vbCrLf
Cuerpo = Cuerpo & ...
'aqui se insertan todos los datos en la variable cuerpo
...
JMail.Body = Cuerpo
JMail.Priority = 3
JMail.Execute
set JMail=nothing
%>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Control de errores bajo ASP

Publicado por Eduard Pascual (3 intervenciones) el 19/11/2005 12:07:07
Desde que publiqué la pregunta hasta ahora no había vuelto a acordarme de ello. Puesto que logré resolver el problema, incluyo aquí la solución/respuesta para que pueda ayudar a otros webmasters en situaciones parecidas:
Lo primero que averigué es que las estructuras de control del tipo 'On Error GoTo [TAG]' tan típicas de Visual Basic i VBA no están disponibles en Visual Basic Script. Explorando un poco, averigüé que en VBS sólo disponia de la instrucción 'On Error Resume Next', que se limita a ignorar el error y pasar a la siguiente línea de código en lugar de finalizar desastrosamente la ejecución. Así pues, la única manera que encontré para permitir que mi código se hiciese cargo del problema fue del siguiente modo:
On Error Resume Next
JMail.Execute 'Instrucción que puede generar el error
ErrorCode = Err.Number 'Guarda el resultado (nº error o 0 si no hay error)
'Err.Number sólo es útil si se consulta immediatamente después del error, al guardarlo en una variable podemos procesarlo más adelante
... 'el código continua
Select Case ErrorCode
Case 0:
'Todo correcto. Aquí va el código para mostrar la confirmación al usuario
Case -2147418113: '8000FFFF a decimal, es el error que pretendo gestionar
'Mensaje de error personalizado, explicando causas y soluciones
Case 1234567890: 'Cualquier error que se quiera controlar
'Código para el error
Case ... ' Usar un Case para cada código de error a gestionar
Case Else
'Código para "error desconocido" o "error no controlable", etc
End Select

En algunos casos, pueden ser útiles las secuencias de control IF, IF-ELSE, IF-ELSEIF-ELSEIF-...-ELSE, WHILE / DO-WHILE / UNTIL / LOOP, etc. La parte clave para resolver la gestión de errores está en usar el 'On Error Resume Next' y guardar el Err.Number después de cada instrucción que pueda generar un error que nos interesa controlar. Una vez guardado este dato, la manera de gestionarlo depende sólo del estilo e imaginación del programador y de las necesidades propias del script, página o programa.

Espero que esta pregunta/respuesta le sea de utilidad a alguien.
Atentamente,
Eduard Pascual
Programador - Webmaster - SEO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar