Separado con métodos para una mejor lectura. Captura de excepciones (todas son provocadas por una mala entrada, por lo que uso lo mismo para todas)