5. Excepciones

5.8. Error en tipo de datos.

Veamos como solucionar el tipo de error en datos. 

En Python esto se acostumbraba hacer con una excepción, no es así en C++.

Vemos que no es necesario levantar una excepción para el caso de error en tipo de datos. Si ingresamos la letra o caracter "A":


El orden de cin.clear() y cin.ignore() no es importante, pero deben estar ambos.

  • cin.ignore(): deja de extraer caracteres si se alcanza el final del archivo
  • cin.clear(): limpia la bandera de error de cin.

De esta manera no se genera un loop.

Este código tendría que ser mejorado, que pasa si se ingresa mas que un caracter , por ejemplo "hola"?


Podemos ver que con cada uno de los 4 caracteres de hola , muestra: "Ud. NO ingresó..."

Para ello podemos modificar el código de la siguiente manera:

Si usamos algo como #define max_size 50 y luego cin.ignore(max_size) luego deberemos llegar a tipera 50 caracteres hasta que ignore deje de realizar su tarea.

Así que vamos a usar cin.getline() para leer los caracteres que quedan en el buffer, el código quedaría algo como:



Si ahora ejecutamos y escribimos hola, se vería:


Este ejemplo le falta algo para ser perfecto, pero se deja al alumno. Probar ingresar 2,34 en lugar de 2.34 y ver que pasa.