elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con las excepciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con las excepciones  (Leído 2,136 veces)
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Problema con las excepciones
« en: 27 Enero 2013, 12:24 pm »

Vereis tengo una clase tal que asi:

Código
  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
  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
  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?


« Última modificación: 27 Enero 2013, 12:27 pm por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Problema con las excepciones
« Respuesta #1 en: 27 Enero 2013, 13:15 pm »

Olvidalo , no se porque pasa :/ . Por codeblocks no creo que sea.
Código:
Aviso que no entiendo muy bien el uso de las sentencias try , catch y throw, pero digamos que throw tiene que lanzar algo ¿no? cuando en throw haces:
throw Excepcion("No hay ningun fichero abierto",ARCHIVO_NO_ABIERTO);
Pero esa función(constructor) solo le da valores a una estructura ya creada pero tú llamas al constructor sin estructura o eso parece no se.Fíjate aquí:
http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fcplr153.htm
Me parece a mi que eso habría que ponerlo así:
if (!Lectura.is_open())
    {
        Excepcion excepcion;
        excepcion.Excepcion("No hay ningun fichero abierto",ARCHIVO_NO_ABIERTO);
        throw excepcion;
    }
Igual la estoy liando no sé.
¡Un saludo!


« Última modificación: 27 Enero 2013, 13:50 pm por avesudra » En línea

Regístrate en
naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Problema con las excepciones
« Respuesta #2 en: 28 Enero 2013, 00:22 am »

Código
  1. Excepcion(string mensaje,unsigned int Error) : Mensaje(Mensaje),N_Error(Error) {}; // Constructor

En esta linea deberías pasarle al constructor de Mensaje "mensaje" en minúscula. Quedando así:

Código
  1. Excepcion(string mensaje,unsigned int Error) : Mensaje(mensaje),N_Error(Error) {}; // Constructor

Además de eso, estás validando que lance la excepción? es decir, que no está abierto el archivo...
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Problema con las excepciones
« Respuesta #3 en: 28 Enero 2013, 14:50 pm »

Código
  1. Excepcion(string mensaje,unsigned int Error) : Mensaje(Mensaje),N_Error(Error) {}; // Constructor

En esta linea deberías pasarle al constructor de Mensaje "mensaje" en minúscula. Quedando así:

Código
  1. Excepcion(string mensaje,unsigned int Error) : Mensaje(mensaje),N_Error(Error) {}; // Constructor
Funciono a la perfección, gracias!
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Asprotect y método de las excepciones
Ingeniería Inversa
4rS3NI( 4 2,423 Último mensaje 14 Abril 2005, 01:51 am
por 4rS3NI(
Problema con excepciones.
Java
|Miguel| 0 1,668 Último mensaje 5 Febrero 2012, 19:29 pm
por |Miguel|
Problema capturando excepciones
Programación C/C++
naderST 3 2,282 Último mensaje 8 Marzo 2012, 18:38 pm
por darkvidhack
Problema con excepciones en C++: Stackwalker.h
Programación C/C++
SARGE553413 3 2,179 Último mensaje 2 Marzo 2013, 17:03 pm
por naderST
MOVIDO: Problema con Excepciones en C#
Programación C/C++
Novlucker 0 1,319 Último mensaje 12 Junio 2013, 18:33 pm
por Novlucker
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines