Se é melhor deixar uma regex lá ou se é melhor deixar o controle de erro através de uma exceção.
O regex tem a implicação de ser mais difícil para quem lê entender. Muitos também desconfiam da performance da Regex.
E o controle de erro através de uma exceção é algo que muitos programadores evitam, ou por acharem que também gera um código confuso, ou porque vieram do C++, onde exceções são lentas de serem disparadas e capturadas.
No fundo, é uma discussão extremamente purista. Eu só comentei que o pessoal estava complicando porque a solução tratando a exceção do parseInt me pareceu óbvia demais, e não consegui entender como ainda não havia sido proposta.[/quote]
Também concordo em regex ser difícil de entender, eu só uso quando tem para copiar em algum lugar, ou seja para coisas genéricas demais como CPF, CNPJ, EMail, etc. Tem o http://rubular.com/ que ajuda, mas evito usar regex para algo mais particular, pois pra mim legibilidade está acima de outras coisas. E a questão do controle por exceção isso vai depender como cada um está implementando. No .NET eu uso o FluentValidation, e o que ele faz por baixo dos panos nem quero saber, mas para validar meu Negócio só me preocupo com o retorno booleano. E sobre o parseInt tem razão, é muito mais fácil e nativo.
Para esse caso em específico, o .Net também tem o Integer.tryParse, que converte o número para int, não lança exceção e de quebra ainda avisa caso a conversão não seja possível.
Para esse caso em específico, o .Net também tem o Integer.tryParse, que converte o número para int, não lança exceção e de quebra ainda avisa caso a conversão não seja possível. [/quote]Sim, também uso no .NET, mas nesse caso ai mesmo que não fosse para fins de cálculos, é um número pequeno e poderia ser uma propriedade do tipo “int?” ou int se obrigatório, e o model binder já invalidaria o input inválido. E no lado client é bom ajudar o usuário em não comenter erros básicos, onde o input já deveria aceitar somente números, claro que também validar no servidor de acordo com demais condições.