Depende de si la entrada es directamente de un usuario a través de alguna interfaz de usuario o del sistema.
Entrada a través de una interfaz de usuario
Es una pregunta de experiencia del usuario cómo manejar una entrada no válida. No conozco su caso específico, pero en general hay algunas opciones:
- Alerte al usuario del error y pídale que lo arregle antes de continuar (el más común)
- Convierta automáticamente al rango válido (si es posible), pero alerte al usuario al cambio y permita que el usuario verifique antes de continuar.
- Conviértete silenciosamente al rango válido y continúa.
La elección depende de las expectativas de sus usuarios y de la importancia de los datos. Por ejemplo, Google corrige automáticamente la ortografía de las consultas, pero esto conlleva un bajo riesgo porque un cambio inútil no es un problema y es fácil de corregir (e incluso entonces se deja claro en la página de resultados que se cambió la consulta). Por otro lado, si está ingresando coordenadas para un misil nuclear, es posible que desee una validación de entrada más rígida y que no haya soluciones silenciosas de datos no válidos. Así que no hay una respuesta universal.
Lo más importante es que debe considerar si la corrección de una entrada tiene un beneficio para el usuario. ¿Por qué un usuario ingresaría datos no válidos? Es fácil ver cómo alguien podría cometer un error de ortografía, pero ¿por qué alguien ingresaría una longitud de -185? Si el usuario realmente quisiera decir +175, probablemente habría escrito +175. Creo que es muy probable que una longitud no válida simplemente sea un error de escritura, y el usuario quiso decir -85 o algo más. En este caso, la conversión silenciosa es mala e inútil . El enfoque más fácil de usar para su aplicación probablemente sería alertar al usuario del valor no válido y hacer que el usuario lo corrija por sí mismo.
Entrada a través de una API
Si la entrada es de otro sistema o subsistema, no hay duda. Deberías lanzar una excepción. Nunca debe convertir en silencio la entrada no válida de otro sistema, ya que podría enmascarar errores en otras partes del sistema. Si la entrada se "corrige", debería ocurrir en la capa UI, no en el sistema.