Boa noite pessoal, estou com uma dúvida que pode ser a de muitas pessoas.
Tenho 5 ifs que fazem o controle de uma exceção. Ou seja:
if(valorA.equals(valorB){
throw new InvalidParameterException("Exception A");
}
if(valorA.equals(valorC){
throw new InvalidParameterException("Exception B");
}
if(valorA.equals(valorD){
throw new InvalidParameterException("Exception C");
}
Como eu posso melhorar isso?
Agradeço a todas as respostas.
Pode ser um jeito bem nojento, como o abaixo:
Valor v;
if(valorA.equals(v = valorB) || (valorA.equals(v = valorC)|| valorA.equals(v = valorD)){
throw new InvalidParameterException("Exception " + v);
}
Na prática você pode ter um array desses valores a serem comparados. Acho que isso é mais simples:
Valor[] valores = {
valorB,
valorC,
valorD
};
for (Valor v : valores) {
if (valorA.equals (v)) {
throw new InvalidParameterException("Exception " + v);
}
}
M112
#3
Não sei se o que vou sugerir pode ser aplicado ao seu caso e nem mesmo se é a melhor solução, mas que tal separar em vários métodos?
public void validacaoUm(Object valorB) {
if(valorA.equals(valorB){
throw new InvalidParameterException("Exception A");
}
}
public void validacaoDois(Object valorC) {
if(valorA.equals(valorC){
throw new InvalidParameterException("Exception B");
}
}
public void validacaoTres(Object valorD) {
if(valorA.equals(valorD){
throw new InvalidParameterException("Exception C");
}
}
E depois chamar as validações:
public void superValidacao() {
validacaoUm(Object valorB);
validacaoDois(Object valorC);
validacaoTres(Object valorD);
}
Té mais.