Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: johnf9896 en 19 Enero 2015, 04:45 am



Título: Ayuda, Programa C++ no atrapa ninguna excepción
Publicado por: johnf9896 en 19 Enero 2015, 04:45 am
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
Código
  1. try{
  2. throw std::runtime_error("Error");
  3. }
  4. catch(std::exception &ex){
  5.  
  6. }
  7.  

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

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.


Título: Re: Ayuda, Programa C++ no atrapa ninguna excepción
Publicado por: ivancea96 en 19 Enero 2015, 14:24 pm
Código
  1. #include <exception>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7.    try{
  8.        throw exception();
  9.    }catch(exception &e){
  10.        cout << "Error: " << e.what() << endl;
  11.    }
  12.    try{
  13.        throw 666;
  14.    }catch(int n){
  15.        cout << "Error: " << n << endl;
  16.    }
  17.    return 0;
  18. }
  19.  

Ese código, ¿Te muestra los mensajes?


Título: Re: Ayuda, Programa C++ no atrapa ninguna excepción
Publicado por: johnf9896 en 19 Enero 2015, 14:30 pm
En un .cpp aparte sí pero en mi programa no


Título: Re: Ayuda, Programa C++ no atrapa ninguna excepción
Publicado por: ivancea96 en 19 Enero 2015, 16:08 pm
Más detalles. ¿Cómo que "en un .cpp aparte" sí? ¿Qué tiene tu programa?


Título: Re: Ayuda, Programa C++ no atrapa ninguna excepción
Publicado por: johnf9896 en 24 Enero 2015, 15:51 pm
Me refiero a que si creo un nuevo .cpp y lo compilo con ese código, el código funciona pero pongo ese código en mi proyecto y lo compilo el programa no atrapa las excepciones y se crashea


Título: Re: Ayuda, Programa C++ no atrapa ninguna excepción
Publicado por: johnf9896 en 24 Enero 2015, 22:19 pm
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 travez 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.

Gracias invancea96 por las respuestas.