none
Capturar errores no manejados (VB.NET 2003)

    Pregunta

  • Hola,

    de vez en cunado cuando cierro una aplicación desarrollada en VB 2003, me saltan estos 2 errores:

    Excepción no controlada del tipo ' System. NullReferenceException ' en system.windows.forms.dll
    Información adicional: referencia del objeto no establecida como instancia del objeto.

    The exception unknown software exception (0xc0020001) occurred in the application at location 0x7c812a5b

    He revisado varias veces el código, pero no encuentro nada que pueda provocar un fallo. Como uso controles de una empresa tercera, necesito controlar qué error es (para saber si el error procede de algunos de sus componentes).

    He insertado este código en mi app, para intentar capturar el error, pero sigue sin capturarlo.

    Alguna sugerencia?

    Code Snippet

    Module mdlExc

    Public Sub Main

    Dim currentDomain As AppDomain = AppDomain.CurrentDomain
    AddHandler currentDomain.UnhandledException, AddressOf MYExceptionHandler
    AddHandler Application.ThreadException, AddressOf MYThreadHandler


    Application.Run (New myForm)


    End Sub

    Private Sub MYExceptionHandler(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
    'aqui tengo el codigo para crear un log del error
    End Sub

    Private Sub MYThreadHandler(ByVal sender As Object, ByVal e As Threading.ThreadExceptionEventArgs)
    'aqui tengo el codigo para crear el log del error
    End Sub
    End Module





    sábado, 30 de junio de 2007 21:32

Respuestas

  • Yo te sugiero usar la función estándar de VB.NET para desplegar los mensajes, es decir, MsgBox().  Tal vez el error lo genera la llamada a tu función gShErr()
     
    Prueba con algo así:
    Try
         Application.Run(New frmLogin)
    Catch ex as Exception
        MsgBox("Error detectado: " & ex.Message)
    End Try
     
    ex.Message te muestra la descripción del error.  Además, según el error, puedes revisar el contenido de ex.Source, que te dará el nombre de la aplicación o el objeto que te produce el error.
    miércoles, 24 de octubre de 2007 14:08

Todas las respuestas

  • Pon esto:
    Code Snippet

    ...
     AddHandler Application.ThreadException, AddressOf MYThreadHandler



    Try

    Application.Run (New myForm)

    Catch (e as Exception)

     'ahora atrapa el problema

    End Try

    End Sub


    Private .... El código que ya tienes









    domingo, 01 de julio de 2007 8:16
  • Hola,

    gracias por contestar.

    Ya lo he implementado. Ahora sólo me queda esperar que se produzca ese fallo (ya que sólo aparece de vez en cuando).

    Ya te contaré si lo pude atrapar o no.

    Saludos
    lunes, 02 de julio de 2007 16:58
  • Pues no ha habido suerte. Me sigue sin capturar el error . O eso, o esto haciendo mal el CATCH....

    Ver captura:

    http://img123.imageshack.us/my.php?image=unhandlederrorii2.png

    Alguna idea más? porque no sé que probar más...


    saludos


    miércoles, 04 de julio de 2007 17:18
  • Yo te sugiero usar la función estándar de VB.NET para desplegar los mensajes, es decir, MsgBox().  Tal vez el error lo genera la llamada a tu función gShErr()
     
    Prueba con algo así:
    Try
         Application.Run(New frmLogin)
    Catch ex as Exception
        MsgBox("Error detectado: " & ex.Message)
    End Try
     
    ex.Message te muestra la descripción del error.  Además, según el error, puedes revisar el contenido de ex.Source, que te dará el nombre de la aplicación o el objeto que te produce el error.
    miércoles, 24 de octubre de 2007 14:08