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 la entrada no válida. No sé sobre su caso específico, pero en general hay algunas opciones:
- Alerte al usuario sobre el error y haga que el usuario lo repare antes de continuar (lo más común)
- Convierte automáticamente al rango válido (si es posible), pero alerta al usuario sobre el cambio y permite que el usuario verifique antes de continuar.
- Convierta en silencio al rango válido y continúe.
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 en las consultas, pero esto es de bajo riesgo porque un cambio inútil no es un problema y es fácil de solucionar (e incluso en la página de resultados se aclara que la consulta se modificó). 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 sin soluciones silenciosas de datos no válidos. Entonces no hay una respuesta universal.
Lo más importante, debe considerar si corregir la entrada incluso 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 lo más probable es que una longitud inválida sea simplemente un error de escritura, y el usuario quiso decir -85 u otra cosa. 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 sea alertar al usuario sobre el 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 silenciosamente 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 suceder en la capa de la interfaz de usuario, no más profundamente en el sistema.