Excepciones

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.