Validações e Exceções
Outra perguntinha conceitual.
Quando criando um mecanismo de validação, que teoricamente deveria retornar apenas valores booleanos caso o dado de entrada seja válido ou não, seria correto ou interessante ao invés de retornar um possível FALSE, disparar uma exceção informando o quê exatamente está errado naquele dado?
Exemplo de Momento: HTTP Headers :: Accept-Charset
Dado de Entrada: iso-8859-1;q=0.1234
Resultado da Validação: FALSO
Motivo: Segundo RFC 2616 Seção 3, Subseção 3.9 (link) Quality Values devem ser 1 (um) ou qualquer float de 0 a 0.999 com exatos 3 decimais.
Por que a idéia de disparar uma exceção?
No PHP, validar com um Expressão Regular é até possível, porém, preg_match() é preguiçoso a ponto de considerar um trecho de ER como:
[0-9]{1,2}
Isto é, qualquer número de 0 à 9 uma ou duas vezes (e nada mais) válido tanto para 0.123 quanto para 0.1234.
Isso força o uso de uma âncora de término ($), porém ainda segundo essa especificação, o Quality Factor é opcional, logo iso-8859-1 também e válido (e terá seu QF equivalente a um automaticamente).
Mas, não sei se por limitação da linguagem, uma construção como essa:
(ER_PARA_FLOATS)?$
Não surte efeito!
Então pensei em quebrar a informação de entrada, que deve ser separada por ponto-e-vírgula, e validar individualmente. Mas também não quero deixar o usuário às moscas sem saber o porquê de um possível retorno falso.
O que acham?
Discussão (2)
Carregando comentários...