C/Visual C - Ayuda, Programa C++ no atrapa ninguna excepción

   
Vista:
Imágen de perfil de Jhon Pedroza

Ayuda, Programa C++ no atrapa ninguna excepción

Publicado por Jhon Pedroza johnf9896@gmail.com (3 intervenciones) el 19/01/2015 04:40:02
Estoy desarrollando un juego, bien una biblioteca para hacer juegos basada en SFML y un juego basado en esa biblioteca.

El problema es que cuando el programa lanza una excepción el programa se crashea aunque una bloques try con catchs que pueden atrapar la excepción.

Incluso si hago esto
1
2
3
4
5
6
try{
		throw std::runtime_error("Error");
	}
	catch(std::exception &ex){
 
	}

o esto
1
2
3
4
5
try{
		throw std::exception();
	}
	catch(...){
	}

el programa se crashea.

No entiendo porque sucede esto. Además, esto solo pasa en mi programa, cuando escribo los ejemplos de arriba en un simple archivo .cpp y lo compilo, el programa atrapa las excepciones normalmente como de be ser.

Estoy usando Code::Blocks y Netbeans para escribir la biblioteca y el programa. Tengo proyectos en ambos IDEs.
Yo uso el compilador MinGW versión 4.8.1

Espero que alguien tenga alguna idea de porqué esto sucede y tenga alguna solución al problema.

Gracias por leer y responder.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda, Programa C++ no atrapa ninguna excepción

Publicado por Tom (481 intervenciones) el 19/01/2015 14:39:17
En tu código ¿son los constructores los que elevan excepciones ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jhon Fredy

Ayuda, Programa C++ no atrapa ninguna excepción

Publicado por Jhon Fredy johnf9896@gmail.com (3 intervenciones) el 24/01/2015 16:04:48
Pues sí hay constructores que lanzan excepciones pero no importa si es un constructor o no, igual no la atrapa.

Si hago esto en mi programa:
1
2
3
4
5
6
7
int main(int argc, char **argv){
    try{
        throw 3;
    catch(int x){
    }
    return 0;
}

el programa se crashea donde obviamente no debería. Pero si hago este código en un archivo aparte y lo compilo únicamente a él, el programa atrapa la excepción normal. No sé porqué pasa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jhon Fredy

Ayuda, Programa C++ no atrapa ninguna excepción

Publicado por Jhon Fredy (3 intervenciones) el 24/01/2015 22:00:42
Ya he solucionado el problema.

Tenía la idea de que lo que causaba ese problema era una opción que se pasaba al compilador.

Así que busqué en la página gcc.gnu.org la lista de todas las opciones que se podían pasar y leyendo encontré que si se quería pasar excepciones a través de varias bibliotecas compartidas (dlls) no debía usar en el linker la opción
-static-libgcc ni -static-libstdc++ porque éstas bloqueaban las excepciones.
Así que solo quité las opciones del linker y listo asunto solucionado.

Tom gracias por la respuesta de todos modos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar