Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Problemas con las excepciones

Estas en el tema de Problemas con las excepciones en el foro de C/C++ en Foros del Web. Vereis tengo una clase tal que asi: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C++: Ver original using namespace std ;   class Rar_File_Mising { private :     ...
  #1 (permalink)  
Antiguo 27/01/2013, 05:31
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Problemas con las excepciones

Vereis tengo una clase tal que asi:

Código C++:
Ver original
  1. using namespace std;
  2.  
  3. class Rar_File_Mising
  4. {
  5. private:
  6.       ifstream Lectura;
  7.       ofstream Escritura;
  8.      // Demas metodos y variables...
  9.  
  10. public:
  11.       // Constructor
  12.        Rar_File_Mising(const char* Nombre,bool Opcion);
  13.  
  14.       //Metodos
  15.  
  16.       string ListarArchivos();
  17.  
  18.       void Generar(const char* Nombre,vector<unsigned int> Numero);
  19.  
  20.      //...
  21.  
  22.     // Excepciones...
  23.  
  24.       struct Excepcion
  25.      {
  26.           unsigned int N_Error; // Codigo de error
  27.           string Mensaje; // Mensaje de error
  28.  
  29.          Excepcion(string mensaje,unsigned int Error) : Mensaje(Mensaje),N_Error(Error) {}; // Constructor
  30.      };
  31.  
  32.      // Destructor
  33.  
  34.     ~Rar_File_Mising();
  35.  
  36. };

Como veis, he definido una estructura para definir las excepciones que me puedan ocurrir. De forma que si ocurre algo inesperado:

Código C++:
Ver original
  1. if (!Lectura.is_open())
  2.            throw Excepcion("No hay ningun fichero abierto",ARCHIVO_NO_ABIERTO);

El problema esque no me las coge nunca en el bloque catch (ni siquiera en el bloque ...):

Código C++:
Ver original
  1. try
  2. {
  3.     Rar_File_Mising Nuevo(Nombre.c_str(),Opcion);
  4.     cout<<Nuevo.ListarArchivos();
  5. }
  6. catch(Rar_File_Mising::Excepcion &E)
  7. {
  8.       cout<<E.Mensaje<<endl;
  9. }
  10. catch(...)
  11. {
  12.        cout<<"???";
  13. }

¿Que es lo que puede pasar? Me acabo de cambiar al codeblocks hace poco, tengo que activar algo para que me admita las excepciones?
  #2 (permalink)  
Antiguo 31/01/2013, 08:34
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Problemas con las excepciones

Hola te recomendaría que escribas la excepción en una clase que herede de exception. Revisa el siguiente link.

Por otro lado el IDE que utilices no creo que sea el responsable, salvo este mal conectado al compilador, algo raro a menos que no puedas ejecutar un simple hola mundo.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #3 (permalink)  
Antiguo 31/01/2013, 08:51
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Problemas con las excepciones

Ya solucione el problema, estaba en el constructor (Usaba Mensaje para construir Mensaje, lo que daba un bucle infinito).

PD: Personalmente, me gusta crearme mi propia estructura excepción.
  #4 (permalink)  
Antiguo 31/01/2013, 09:02
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Problemas con las excepciones

Cita:
Iniciado por amchacon Ver Mensaje
Ya solucione el problema, estaba en el constructor (Usaba Mensaje para construir Mensaje, lo que daba un bucle infinito).

PD: Personalmente, me gusta crearme mi propia estructura excepción.
Bien por ti. La costumbre es, si trabajas con C++, no uses C, se ve como un paso atrás, no es una ley pero se ve mal.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #5 (permalink)  
Antiguo 31/01/2013, 09:07
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Problemas con las excepciones

Cita:
Iniciado por CapacProg Ver Mensaje
Bien por ti. La costumbre es, si trabajas con C++, no uses C, se ve como un paso atrás, no es una ley pero se ve mal.
La estructuras forman parte de C++...

Yo uso estructuras siempre que creo un objeto que tenga todos los miembros públicos.

Etiquetas: excepciones, fichero, int, string, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:24.