Olá, tenho o seguinte método que é usado para uma função de autocomplete em JSF. O objetivo dele é receber um valor que pode ser o codigo ou o nome da pessoa e efetuar a busca no banco de dados, caso o valor recebido seja o codigo ele faz a conversão para Integer. Minha dúvida é: posso usar o catch vazio dessa forma? Há como melhorar isso?
Obs: Ele funciona perfeitamente, só quero saber se tem formas mais adequadas de fazer.
ValidFieldfield;Stringname="";Integercode=0;Person(ValidFieldfield){this.field=field;if(field==null)thrownewIllegalArgumentException("Must have a value");if(field.getValue()instanceofString)this.name=(String)field.getValue();elsethis.code=(Integer)field.getValue();}@OverridepublicStringtoString(){return"Person [name="+name+", code="+code+"]";}
}
// follwing interface and classes only will allow String and IntegersinterfaceValidField{ObjectgetValue();
}
class StringValue implements ValidField{
String value ;
é uma opção para não deixar o catch vazio, eu tinha feito algo parecido no inicio, mas achei que estava repetido e desnecessário, dai removi. Vou ter que verificar como fica a performance da busca, já que a base é imensa e a busca é feita de acordo com os caracteres inseridos
S
staroski
Você poderia testar com uma expressão regular se o valor recebido é numérico ou não, se for, você trata como código, senão, trata como nome.
J
Joao_Emanuel_Monica
Existem várias diretrizes para quando devemos usar exceções, e acredito que usar uma exceção para validar o tipo de entrada não é uma delas.
No livro “Effective Java” de Joshua Blosh, ele menciona esses, entre outros.
Use exceções apenas para condições excepcionais. Exemplo: não use uma exceção para encerrar uma matriz, entrada do usuário etc.
Embora eu veja que os designers de Java violam isso. por exemplo. EOFException em um ObjectInputStream para idicar o final dos dados
Use exceções capturadas para condições recuperáveis
Use exceções verificadas para condições recuperáveis e exceções de tempo de execução para erros de programação
Não ignore as exceções
Então, no final, se você está escrevendo o programa e sabe o que ele faz e ninguém mais precisa trabalhar nele, então está tudo bem, pois ele funciona.
Mas, no mundo do trabalho, a manutenção pode se tornar um problema.
PS documenta as intenções de forma clara.
Observe que este é apenas o meu ponto de vista e com o que aprendi ao longo da minha jornada, e de forma alguma a maneira perfeita, como todos sabemos, a programação também é uma arte.