publicvoidtesteFull(List<Campo>campos)throwsException{try{for(Campocampo:campos){if(!lstcampos.contains(campo.getNome())){thrownewException("Verifique o campo: "+campo.getNome());// entra, e continua no laço normalmente}}}catch(Exceptione){thrownewException(e.getMessage());}}
Como tens a certeza que o entra no if e continua o for?
W
wilsontads
debugando
D
d34d_d3v1l
galera…
quando um metodo da um throw, ele para a execução do método e volta pra quem o chamou…
nunca ele vai dar o throw e depois continuar o for…
pensa em otura logica ai
W
wilsontads
Desculpe, mais é o que está acontecendo
W
wilsontads
Fiz até um videozinho
D
d34d_d3v1l
Faz isso aqui pra mim:
publicvoidmetodoQualquer(){thrownewException("Erro aqui");System.out.println("Mensagem no console");}
faz com que um método chame isso aí e me diz se o print vai aparecer no console
W
wilsontads
Você concorda comigo que deveria acontecer o mesmo que aconteceu no seu método, com o método postado anteriormente?
W
wilsontads
Vou complicar um pouco mais.
Me diga, porque não entrou no if, se o resultado é true.
D
d34d_d3v1l
Cara, se ele ta caindo no else, é pq ele ta caindo no else!
Em alguma iteracao aí ele cai no else…
outra coisa… o contains esta funcionando do jeitinho que você queria?
Debuga só o método contains
W
wilsontads
o contains está, como você pode ver, o retorno dele é true
W
wilsontads
vou postar os tipos que uso nesse bloco:
ResultSetrs=st.executeQuery("SHOW COLUMNS FROM "+tabela.getNome());//pega o nome das colunasList<String>lstcampos=newLinkedList<String>();// cria o List de StringStringvalue;while(rs.next()){lstcampos.add(rs.getString(1).toLowerCase());//adiciona, o nome da coluna no List}for(Campocampo:campos){//Aqui vem o teste, pra verificar se os campos informados pelo usuário, existem no banco.value=campo.getNome().toLowerCase();if(!lstcampos.contains(value)){// percorrendo o for, eu verifico nesse caso, se o nome "id", contém no meu List de String. nesse caso, ao debugar o resultado é true.thrownewException("Verifique o campo: "+value);//mesmo negando, ele entra nessa linha, executa o throw e continua executando este for.}}
D
d34d_d3v1l
me fala o q vc quer fazer.
Com calma.
kkkkkkk
De todo jeito, acho que o q vc esta pensando nao vai funcionar legal.
Me conta ae.
D
d34d_d3v1l
Vamos fazer um teste???
coloca o retorno aí do método um boolean…
e da um return false aí
e testa os resultados no JUnit mockando os resultados. (JMockito)
Ou então, faz manual mesmo, nao sei…
abraços
P
pmlm
Aposto que o que está a ser executado não está sincronizado com o código que tens. Faz um clean ou rebuild ou algo assim…
W
wilsontads
não fui muito com o contains e resolvi usar o indexof ai invés, e executei o cleanUp.
Aqui, o retorno do indexof é true e ele entra, executa o exception e sai do for. perfeito
eu apenas neguei com o exclamação, e ele continua entrando e continua executando o for após
W
wilsontads
Nada faz sentido mais, rs…
nesse caso aqui, ele entra no if e no else(aqui ainda passa pelo throws e continua executando normalmente)
W
wilsontads
Ao invés de usar o for each, eu fiz o seguinte:
for (int i=0; i < campos.size(); i++) {
campoLocal = campos.get(i);
e deu certo.
só que agora fico na duvida, pq nao parava quando usava o for each. =\
D
d34d_d3v1l
wilsontads:
Ao invés de usar o for each, eu fiz o seguinte:
for (int i=0; i < campos.size(); i++) {
campoLocal = campos.get(i);
e deu certo.
só que agora fico na duvida, pq nao parava quando usava o for each. =
Eu diria que era o contains ou o proproio index of
W
wilsontads
Depois que funcionou com o indexOf, eu implementei o contains novamente. ele entra no thrwos, para o loop e lança a excessão.
antes com o for each ele continuava no loop =\