Depende se a entrada é diretamente de um usuário por meio de alguma interface do usuário ou do sistema.
Entrada através de uma interface do usuário
É uma questão de experiência do usuário como lidar com entradas inválidas. Não conheço o seu caso específico, mas em geral existem algumas opções:
- Alerte o usuário sobre o erro e faça com que ele seja corrigido antes de continuar (Mais comum)
- Converter automaticamente no intervalo válido (se possível), mas alerte o usuário sobre a alteração e permita que ele verifique antes de prosseguir.
- Converta silenciosamente no intervalo válido e continue.
A escolha depende das expectativas dos usuários e da importância dos dados. Por exemplo, o Google corrige automaticamente a ortografia nas consultas, mas isso é de baixo risco, porque uma alteração inútil não é um problema e é fácil de corrigir (e mesmo assim fica claro na página de resultados que a consulta foi alterada). Por outro lado, se você estiver digitando coordenadas para um míssil nuclear, poderá querer uma validação de entrada mais rígida e nenhuma correção silenciosa de dados inválidos. Portanto, não há resposta universal.
Mais importante, você deve considerar se a correção de entrada tem um benefício para o usuário. Por que um usuário insere dados inválidos? É fácil ver como alguém pode cometer um erro de ortografia, mas por que alguém digitaria uma longitude de -185? Se o usuário realmente quisesse +175, provavelmente teria digitado +175. Eu acho que é mais provável que uma longitude inválida simplesmente seja um erro de digitação, e o usuário quis dizer -85 ou outra coisa. Nesse caso, a conversão silenciosa é ruim e inútil . A abordagem mais amigável para o seu aplicativo provavelmente seria alertar o usuário sobre o valor inválido e fazer com que o usuário corrija por conta própria.
Entrada através de uma API
Se a entrada for de outro sistema ou subsistema, não há dúvida. Você deve lançar uma exceção. Você nunca deve converter entradas inválidas de outro sistema em silêncio, pois isso pode mascarar erros em outras partes do sistema. Se a entrada for "corrigida", ela deverá ocorrer na camada da interface do usuário, não mais profundamente no sistema.