Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿cómo Se Captura Una Excepción?

Iniciado por fiero, 23 de Abril de 2006, 05:49:18 PM

« anterior - próximo »

fiero

 good day!

Mi pregunta se refiere a una de esas excepciones del sistema, que saltan cuando intentas escribir o leer en una dirección de memoria que no a sido reservada por el programa.

He probado con  try{ }catch{} , pero parece ser que estas funciones solo sirven cuando trabajas en C++. El código que me dá estos fallos está escrito en inline asm ya que es el que utilizo para el bucle de renderizado por software, en mi motor 3D. Todos los parámetros de entrada a esta función están totalmente delimitados, pero aún así hay algún error que se me sigue escapando y que hace cascar al programa un 0,01% de las veces, aunque sólo en determinadas circunstancias. Este código se linka dinámicamente, así que también es bastante difícil de debugear. Con el tiempo terminaré descubriendo el fallo, pero sería perfecto si el programa tuviera una especie de "protección" ante estos fallos.

He visto algunos programas que tienen sus propios mensajes de excepciones personalizados, pero nunca he sabido hacer algo así.

¿Alguna idea?

saludos
www.videopanoramas.com Videopanoramas 3D player

[EX3]

 
Cita de: "fiero"Mi pregunta se refiere a una de esas excepciones del sistema, que saltan cuando intentas escribir o leer en una dirección de memoria que no a sido reservada por el programa.
(...)
He visto algunos programas que tienen sus propios mensajes de excepciones personalizados, pero nunca he sabido hacer algo así.

¿Alguna idea?
Hace poco subi un codigo que tenia en VB6 para llamar a una funcion de Windows para controlar errores no interceptables (aun estando en VB se puede portar con suma facilidad a C++) y poder responder a ellos mostrando o no el mensaje de windows (su informe de errores o mensajes de error), mostrando un mensaje propio y personalizable, salvando los datos antes de terminar la ejecucion o inclusive "pasarse por el forro" el error y retomar la ejecucion donde la dejastes (un estilo On Error Resume Next del VB6). Te paso el enlace al post: Informe de Errores

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

fiero

 ooops!  Gracias EX3, no había visto ese post, voy a estudiarmelo :)

un saludo
www.videopanoramas.com Videopanoramas 3D player

Pogacha

 No se el alcanze, pero puedes probar con:
__try {
 _asm {
 // codigo asm;
    }
   } __except(EXCEPTION_EXECUTE_HANDLER)
{
 // tomar medidas;
}
}

martiño

 se hace con SetUnhandledExceptionFilter

[EX3]

 
Cita de: "martiño"se hace con SetUnhandledExceptionFilter
Es justo la funcion que muestro en mi codigo.

Salu2..
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.