buenas tardes a todos
en el dia de hoy, os enseñare como detectar esos dichosos bugs de arranque q ni el mismo visual studio te los ubica :P dando por error
--> Error desconocido, cerrando la aplicacion <--
suelen suceder al migrar la aplicacion a otras pcs y a veces se les olvidan librerias, o alguna incompatibilidad no administrada por el desarrollador
a la hora de atacar dichos problemas siempre debemos tener a mano un Sub modulo de arranque, que monitoree el arranque principal
porque ? porque el submodulo tendria 1 metodo de captado de error, q al ejecutar el verdadero hilo (hilo-padre) y falle directamente el submodulo lo detecte e informe para su rapido fix
suelen denominarse Versiones Debug o para detectar errores
os dejo esta pequeña muestra de codigo
'usada para testear errores de thread en caso de emergencia usar
'cuando se use este submain para analisis de bugs de arranque debemos apagar en las propiedades la opcion (habilitar el marco de trabajo de la aplicacion)
'al terminar de reparar el bug debemos volver habilitarle!
Public Class submain
<STAThread()> _
Friend Shared Sub Main()
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(False)
AddHandler Application.ThreadException, AddressOf Application_ThreadException
'Added this
AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionEventRaised
Application.Run(New Form1())
End Sub
Private Shared Sub Application_ThreadException(ByVal sender As Object, ByVal e As System.Threading.ThreadExceptionEventArgs)
MessageBox.Show(e.Exception.Message)
End Sub
'Added this
Private Shared Sub UnhandledExceptionEventRaised(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
If e.IsTerminating Then
Dim o As Object = e.ExceptionObject
MessageBox.Show(o.ToString) ' use EventLog instead
End If
End Sub
End Class
esta clase, para que puedan ejecutarle como metodo principal de arranque, en las propiedades de vuestro proyecto deben desactivar la opcion habilitar el marco de trabajo de la aplicacion
con ese tremendo submain, pueden detectar el 100% de los errores ocultos en el arranque, ideal para esas pcs q no les quiere correr vuestro soft y necesitan a fuerza bruta hacer salir el error y lograr repararle :)
disfrutenlo ;)
yo siempre guardo este submain en mis proyectos, y tengo mis versiones debugger para las pcs problematicas ;)
saludos
Gracias por colgarlo, jugare con ello un poquillo a ver como luce.
Saludos!
es lo mismo si pones un try catch en el sub_main, tiene el mismo efecto, si surge un error en la aplicacion salta al sub_main, yo lo tengo asi en una aplicacion.
saludos.
Cita de: seba123neo en 26 Diciembre 2012, 21:15 PM
es lo mismo si pones un try catch en el sub_main, tiene el mismo efecto, si surge un error en la aplicacion salta al sub_main, yo lo tengo asi en una aplicacion.
saludos.
a veces usando 1 solo try no obtienes los errores bien detallados, esta es otra forma asignandole eventos asi puedes capturar multiples tipos de errores y obtener respuestas mas exactas
xD muchas formas de verle
Discrepo, con un try/catch si se obtienen los errores detallados, lo que ocurre es que muchas veces en el manejo de errores se pierde el
InnerException por ejemplo
try
{
}
catch(Exception ex)
{
throw ex;
}
!=
try
{
}
catch
{
throw;
}
Esos fragmentos de código no siempre son iguales :P
Saludos
Cita de: Novlucker en 26 Diciembre 2012, 22:16 PM
Discrepo, con un try/catch si se obtienen los errores detallados, lo que ocurre es que muchas veces en el manejo de errores se pierde el InnerException por ejemplo
try
{
}
catch(Exception ex)
{
throw ex;
}
!=
try
{
}
catch
{
throw;
}
Esos fragmentos de código no siempre son iguales :P
Saludos
xD hay muchas formas de ponerlo :P yo decanto mas por eventos controlados :P en estas cosas y en cosas pequeñas el try-catch