MANEJO DE ERRORES

04/11/2003 - 19:03 por Marco Barboza | Informe spam
Alguien tiene idea de como se manejan "elegantemente" los
errores de asp.

Por ejemplo si debe de llenar un cuestionario de este tipo:

Numero1: 100
Numero2: 0
Resultado = Numero1 / Numero2

Como hago para enviar una pagina donde se le indique que
fue lo que paso. Ya he tratado con on error resume next,
pero solo me envia el ULTIMO error ocurrido mientras que
yo necesito el PRIMER error.

Espero que me puedan ayudar... ¡Gracias!

Preguntas similare

Leer las respuestas

#1 Luis Gómez Sánchez [MS]
04/11/2003 - 21:41 | Informe spam
Hola Marco,

La mejor forma es "reescribir" la página que controla un determinado error.
Por ejemplo, cuando IIS genera un erro de "división por 0" nod redirecciona
automáticamente a la página \iishelp\common\500-100.asp. Esta configuración
es modificable dentro de IIS:

WebSite>Properties>Custom Errors

En ese caso puedes redireccionar a otra página de usuario que realice las
acciones necesarias: log del error un una BBDD, enviar mail al
administrador, etc. El código de la página por defecto (500-100.asp) te
puede valer de ejemplo de cómo gestionar los errores, ya sea redireccionando
a otra página o gestionándolo desde el propio código. A continuación tienes
un pequeño ejemplo de la primera de las opciones (redirección a una página
de usuario):

<%Response.Clear%>

<H1>Error en la aplicación</H1>
<H2>Se ha generado el siguiente error: </H2>

<%
Dim objASPError
Dim bakCodepage
on error resume next

Set objASPError = Server.GetLastError

bakCodepage = Session.Codepage
Session.Codepage = 1252

on error goto 0
Response.Write Server.HTMLEncode(objASPError.Category)
If objASPError.ASPCode > "" Then Response.Write Server.HTMLEncode(", " &
objASPError.ASPCode)
Response.Write Server.HTMLEncode(" (0x" & Hex(objASPError.Number) & ")" )
& "<br>"

If objASPError.ASPDescription > "" Then
Response.Write Server.HTMLEncode(objASPError.ASPDescription) & "<br>"

elseIf (objASPError.Description > "") Then
Response.Write Server.HTMLEncode(objASPError.Description) & "<br>"
end if



blnErrorWritten = False

' Only show the Source if it is available and the request is from the same
machine as IIS
If objASPError.Source > "" Then
strServername = LCase(Request.ServerVariables("SERVER_NAME"))
strServerIP = Request.ServerVariables("LOCAL_ADDR")
strRemoteIP = Request.ServerVariables("REMOTE_ADDR")
If (strServername = "localhost" Or strServerIP = strRemoteIP) And
objASPError.File <> "?" Then
Response.Write Server.HTMLEncode(objASPError.File)
If objASPError.Line > 0 Then Response.Write ", line " &
objASPError.Line
If objASPError.Column > 0 Then Response.Write ", column " &
objASPError.Column
Response.Write "<br>"
Response.Write "<font style=""COLOR:000000; FONT: 8pt/11pt courier
new""><b>"
Response.Write Server.HTMLEncode(objASPError.Source) & "<br>"
If objASPError.Column > 0 Then Response.Write
String((objASPError.Column - 1), "-") & "^<br>"
Response.Write "</b></font>"
blnErrorWritten = True
End If
End If

If Not blnErrorWritten And objASPError.File <> "?" Then
Response.Write "<b>" & Server.HTMLEncode( objASPError.File)
If objASPError.Line > 0 Then Response.Write Server.HTMLEncode(", line "
& objASPError.Line)
If objASPError.Column > 0 Then Response.Write ", column " &
objASPError.Column
Response.Write "</b><br>"
End If
%>


Un saludo.

Luis Gómez
Este mensaje se proporciona "como está" sin garantías de ninguna clase, y no
otorga ningún derecho.



"Marco Barboza" wrote in message
news:0ea901c3a2fd$ea312220$
Alguien tiene idea de como se manejan "elegantemente" los
errores de asp.

Por ejemplo si debe de llenar un cuestionario de este tipo:

Numero1: 100
Numero2: 0
Resultado = Numero1 / Numero2

Como hago para enviar una pagina donde se le indique que
fue lo que paso. Ya he tratado con on error resume next,
pero solo me envia el ULTIMO error ocurrido mientras que
yo necesito el PRIMER error.

Espero que me puedan ayudar... ¡Gracias!
Respuesta Responder a este mensaje
#2 Marco Barboza
05/11/2003 - 14:16 | Informe spam
¡Muchas Gracias!

Tomare su consejo muy en cuenta. :)
Hola Marco,

La mejor forma es "reescribir" la página que controla un


determinado error.
Por ejemplo, cuando IIS genera un erro de "división por


0" nod redirecciona
automáticamente a la página \iishelp\common\500-100.asp.


Esta configuración
es modificable dentro de IIS:

WebSite>Properties>Custom Errors

En ese caso puedes redireccionar a otra página de usuario


que realice las
acciones necesarias: log del error un una BBDD, enviar


mail al
administrador, etc. El código de la página por defecto


(500-100.asp) te
puede valer de ejemplo de cómo gestionar los errores, ya


sea redireccionando
a otra página o gestionándolo desde el propio código. A


continuación tienes
un pequeño ejemplo de la primera de las opciones


(redirección a una página
de usuario):

<%Response.Clear%>

<H1>Error en la aplicación</H1>
<H2>Se ha generado el siguiente error: </H2>

<%
Dim objASPError
Dim bakCodepage
on error resume next

Set objASPError = Server.GetLastError

bakCodepage = Session.Codepage
Session.Codepage = 1252

on error goto 0
Response.Write Server.HTMLEncode(objASPError.Category)
If objASPError.ASPCode > "" Then Response.Write


Server.HTMLEncode(", " &
objASPError.ASPCode)
Response.Write Server.HTMLEncode(" (0x" & Hex


(objASPError.Number) & ")" )
& "<br>"

If objASPError.ASPDescription > "" Then
Response.Write Server.HTMLEncode


(objASPError.ASPDescription) & "<br>"

elseIf (objASPError.Description > "") Then
Response.Write Server.HTMLEncode


(objASPError.Description) & "<br>"
end if



blnErrorWritten = False

' Only show the Source if it is available and the


request is from the same
machine as IIS
If objASPError.Source > "" Then
strServername = LCase(Request.ServerVariables


("SERVER_NAME"))
strServerIP = Request.ServerVariables("LOCAL_ADDR")
strRemoteIP = Request.ServerVariables("REMOTE_ADDR")
If (strServername = "localhost" Or strServerIP =


strRemoteIP) And
objASPError.File <> "?" Then
Response.Write Server.HTMLEncode(objASPError.File)
If objASPError.Line > 0 Then Response.Write ",


line " &
objASPError.Line
If objASPError.Column > 0 Then Response.Write ",


column " &
objASPError.Column
Response.Write "<br>"
Response.Write "<font style=""COLOR:000000; FONT:


8pt/11pt courier
new""><b>"
Response.Write Server.HTMLEncode


(objASPError.Source) & "<br>"
If objASPError.Column > 0 Then Response.Write
String((objASPError.Column - 1), "-") & "^<br>"
Response.Write "</b></font>"
blnErrorWritten = True
End If
End If

If Not blnErrorWritten And objASPError.File <> "?" Then
Response.Write "<b>" & Server.HTMLEncode(


objASPError.File)
If objASPError.Line > 0 Then Response.Write


Server.HTMLEncode(", line "
& objASPError.Line)
If objASPError.Column > 0 Then Response.Write ",


column " &
objASPError.Column
Response.Write "</b><br>"
End If
%>


Un saludo.

Luis Gómez
Este mensaje se proporciona "como está" sin garantías de


ninguna clase, y no
otorga ningún derecho.



"Marco Barboza" wrote in


message
news:0ea901c3a2fd$ea312220$
Alguien tiene idea de como se manejan "elegantemente" los
errores de asp.

Por ejemplo si debe de llenar un cuestionario de este


tipo:

Numero1: 100
Numero2: 0
Resultado = Numero1 / Numero2

Como hago para enviar una pagina donde se le indique que
fue lo que paso. Ya he tratado con on error resume next,
pero solo me envia el ULTIMO error ocurrido mientras que
yo necesito el PRIMER error.

Espero que me puedan ayudar... ¡Gracias!


.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida