Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


Problemas con Throw

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

Problemas con Throw

Notapor ZiCruz el Lun Abr 16, 2007 11:23 am

Hola a tod@s,

en una aplicación que estoy haciendo, sino cumple una condición genero una excepción con la siguiente clase:


using namespace System;

public ref class ValorOctetoIPException: public System::ApplicationException {
private:
static String^ Mensaje = "Valor del octeto incorrecto. /nNo está entre 0 y 255.";

public:
// --------------------------------------------------------------------------
// | Constructores |
// --------------------------------------------------------------------------
ValorOctetoIPException()
: ApplicationException(Mensaje) {}

ValorOctetoIPException(String^ auxMensaje)
: ApplicationException(String::Format("{0} - {1}", Mensaje, auxMensaje)) {}

ValorOctetoIPException(String^ auxMensaje, ApplicationException^ perteneceA)
: ApplicationException(String::Format("{0} - {1}", Mensaje, auxMensaje), perteneceA) {}
};

y la siguiente instrucción:

throw gcnew ValorOctetoIPException();

pero cuando provoco esta excepción para realizar la prueba me aparece el mensaje de la excepción, pero y ahí viene mi problema, es que, me da a elegir entre continuar con el programa o salir.

que estoy haciendo mal, ya quiero que aparezca el mensaje y despues de aceptarlo de por terminada la aplicación.
[/b]
ZiCruz
Novato
Novato
 
Mensajes: 15
Registrado: Mar Abr 10, 2007 1:35 am

Re: Problemas con Throw

Notapor latindeveloper el Mar Abr 17, 2007 9:00 pm

Para capturar una excepcion tienes que generarla en un bloque de codigo try catch

Código: Seleccionar todo
funcion()
{
     throw gcnew ValorOctetoIPException();
}

try
{
    funcion();
}
catch(TipodeExcepcion)
{

}
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Notapor ZiCruz el Mié Abr 18, 2007 12:51 am

Muchas gracias por la respuesta,

eso no le he probado pero supongo que funcionar.


lo que yo quiero es que sino hace el try/cath y se cumple una condición cuando haga el:

throw gcnew ValorOctetoIPException();

le de el mensaje de error y provoque el un error de ejecución sin que me pregunte si quiere continuar.
ZiCruz
Novato
Novato
 
Mensajes: 15
Registrado: Mar Abr 10, 2007 1:35 am

Notapor latindeveloper el Sab Abr 21, 2007 11:36 am

Si produces un error mediante throw tienes que preveer que algun segmento de codigo lo capture, si no lo pones dentro deun segmento try/catch el sistema operativo te enviará ese molestoso mensaje.
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Notapor ZiCruz el Sab Abr 21, 2007 11:56 pm

latindeveloper escribió:Si produces un error mediante throw tienes que preveer que algun segmento de codigo lo capture, si no lo pones dentro deun segmento try/catch el sistema operativo te enviará ese molestoso mensaje.


Si claro si no controlas el error te debe salir un mensaje, que es lo que quiero, pero lo que no me termina de gustar es que ese mensaje te de la opcion de continuar, porque si se produce una excepción es porque algo está mal, y el programa no necesita continuar. ¿no crees? o si otra persona utiliza mi clase y quiere controlar el error lo podrá hacer sin ningún problema, pero si no lo hace que el programa se rompa sin que le de la opción de continuar.

a ver si me echais una mano porque por más cosas que pruebo no lo consigo.


Muchas gracias
ZiCruz
Novato
Novato
 
Mensajes: 15
Registrado: Mar Abr 10, 2007 1:35 am

Debug, Release

Notapor latindeveloper el Dom Abr 22, 2007 11:50 am

Lo que sucede esque estas compilando en modo debug , el modo en que se muestran todos los errores para el programador pueda corregirlos antes de compilar y distribuir la version release.

Si cambias de modo de compilacion, notarás la diferencia.
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados