lunes, 30 de abril de 2012

06 - Manejo de Errores

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.

  1. Crear una página con el nombre frmError.aspx.

  1. 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");

  1. Ejecutar la aplicación y ver el error que se despliega.

  1. 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:

  1. Agregar un nuevo elemento a la solución, seleccionando una aplicación de clase de plantilla global.

  1. 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.

  1. Agregar la directiva customError.

  1. 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

  1. 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>

  1. 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: