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

Volver al menú si hay un error.

Estas en el tema de Volver al menú si hay un error. en el foro de C/C++ en Foros del Web. Hola chicos. Vengo a vosotros con otra duda que seguro que es una chorrada. Estoy haciendo un programa el cual imprime un menú con las ...
  #1 (permalink)  
Antiguo 14/05/2010, 11:34
 
Fecha de Ingreso: diciembre-2005
Mensajes: 29
Antigüedad: 18 años, 3 meses
Puntos: 1
Volver al menú si hay un error.

Hola chicos. Vengo a vosotros con otra duda que seguro que es una chorrada.

Estoy haciendo un programa el cual imprime un menú con las opciones.

Lee por teclado lo que se le va pidiendo y si detecta un error da mensaje, pero (y ahí es donde tengo yo el problema) sigue a la siguiente función, como si nada. Detecta el error perfecto, pero no se como hacer que cuando yo llamo a la función que he implementado "int error(int nerror);" imprima por pantalla y deje de ejecutar código y vuelva al menú, el cual esta en un bucle "do{}while (1);" y salgo de la aplicación con la opción 4 del menú usando "exit(1);"

supongo que no me recomendareis variables globales, aunque tampoco pienso usarlas. Tampoco me gustaría usar flags por todo el programa...

¿Como puedo hacer que al entrar en mi "int error(int nerror);", se ejecute el switch para mostrar el error y posteriormente vuelva al menú?

Muchas gracias por vuestra atención ;)

SALUDOS
  #2 (permalink)  
Antiguo 14/05/2010, 13:16
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Volver al menú si hay un error.

En C++, una alternativa es usar excepciones..

El do-while modificarlo para que capture una excepcion y llame a la funcion error que ya tienes

Código C++:
Ver original
  1. do {
  2.   try {
  3.        // mostrar opciones de menu
  4.        // realizar accion asociada
  5.   }
  6.   catch( UnaExcepcion e )
  7.   {
  8.       error( e );  // ya existe.
  9.   }
  10. } while(1);

y en las funciones, en vez de invocar a error, arrojar una excepcion

Código C++:
Ver original
  1. if( condicion_mala ) {
  2.     // error("hubo un error" );   // no hacerlo, arrojar una excepcion como abajo
  3.     throw UnaExcepcion("Algo muy muy malo ocurrio");
  4. }

Para que todo compile y funcione "UnaExcepcion" la defines como una clase cuyo constructor tiene que calzar con la invocacion que decidas que mas te conviene, o bien derivas desde std:exception.

Etiquetas: volver
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 01:39.