NOTA: Ante todo explicar que este manual es un ejercicio completo, por lo que recomiendo que si desena estudiarlo partan desde el principio
Es posible manejar y administrar los errores que se presentan en cada una de las páginas que se ejecutan en una aplicación web, en este punto veremos cuales son las diversas formas de administrar el manejo de errores dentro de una aplicación.
Los diversos tipos de errores que se pueden administrar son los siguientes:
- Capturar errores en una página.
- Capturar Errores de Aplicación.
- Manejando los errores en el web.config
Captura de errores en una página.
- Crear una página con el nombre frmError.aspx.
- En el método que atiende el evento load del formulario lanzaremos un evento que desplegará un error, utilizando las siguientes líneas de código:
throw new ApplicationException("Error de Usuario");
- Ejecutar la aplicación y ver el error que se despliega.
- Agregar el siguiente procedimiento, el cual estará encargado de capturar y administrar el error que se ha desplegado:
Sub Page_Error(ByVal sender As Object, ByVal args As EventArgs) Handles Me.Error
Dim e As Exception = Server.GetLastError()
Response.Write("Lo sentimos, se ha producido un error")
Server.ClearError()
End Sub
En la interfaz se desplegará el mensaje de error que el usuario defina.
Captura de errores de aplicación
Si no es posible capturar un error localmente, se puede capturar este globalmente creando funciones en el archivo global.asax, específicamente en el método Application_Error. Para esto se debe hacer lo siguiente:
- Agregar un nuevo elemento a la solución, seleccionando una aplicación de clase de plantilla global.
- En el archivo global.asax agregar las siguientes líneas de código en el método Application_Error:
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Código que se ejecuta al producirse un error no controlado
Dim path As String = Server.MapPath("log.txt")
Dim exc As System.Exception = Server.GetLastError()
Try
If (Not System.IO.File.Exists(path)) Then
Using fs As System.IO.StreamWriter = System.IO.File.CreateText(path)
fs.WriteLine(exc.ToString())
End Using
Else
Using fs As System.IO.StreamWriter = System.IO.File.AppendText(path)
fs.WriteLine(exc.ToString())
End Using
End If
Catch ex As System.Exception
Using fs As System.IO.StreamWriter = System.IO.File.AppendText(path)
fs.WriteLine(exc.ToString())
End Using
Finally
Response.Redirect("frmError.aspx")
End Try
End Sub
Manejando los errores en el web.config.
También es posible manejar los errores en el web.config, definiendo los siguientes parámetros.
- Agregar la directiva customError.
- Dentro de la directiva customError definir los siguientes parámetros:
<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="frmMensaje.aspx"/>
</system.web>
</configuration>
Con esto se logra que cuando exista un error en alguna aplicación se despliegue un mensaje amigable al usuario
- Tambien es factible definir la redirección de páginas por un un número de error en especícico, por ejemplo:
<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="frmMensaje.aspx">
<error statusCode="500" redirect="PaginaError.aspx"/>
</system.web>
</configuration>
- Para probar el funcionamiento del mensaje de error, agregaremos en la página de frmError.aspx un link button, apuntando a una página inexistente, al ejecutarse este link button al no existir la página se redireccionará a la página de error en donde se encuentra el mensaje respectivo.
No hay comentarios:
Publicar un comentario