Galera olhem estes codigos…
action
try {
Delegate delegate = new Delegate();
boolean retorno = delegate.validar(nroSerieCredencial, nomeUsuario);
} catch (Exception e) {
// Report the error using the appropriate name and ID.
errors.add("error", new ActionError(e.getMessage()));
}
if (!errors.isEmpty()) {
saveErrors(request, errors);
forward = mapping.findForward("error");
} else {
forward = mapping.findForward("success");
}
return (forward);
}
Delegate
public String validar(String usuario, String nroSerieCredencial) throws BDException {
try {
BO bo = new BO();
boolean retornoAssociacao = bo.validar(usuario, nroSerieCredencial);
} catch (BOException e) {
throw new BDException(e.getMessage());
}
return retornoAssociacao;
}
BO
public boolean validar(String usuario, String nroSerieCredencial) throws BOException {
boolean retornoValidacao = false;
try {
if(usuario == null && nroSerieCredencial == null) {
throw new BOException("Paramentros nulos.");
}else if(usuario == null) {
throw new BOException("Usuário nulo");
}else if(nroSerieCredencial == null){
throw new CredentialBOException("nroSerieCredencial nulo");
}else{
retornoValidacao = true;
}
} catch (DAOException e) {
throw new BOException(e.getStackTrace());
}
return retornoValidacao;
}
Galera a unica coisa que eu quero é monstrar a exception que eu lancei na tela.
“throw new BOException(“Usuário nulo”);”
mais não cai aqui dentro
catch (Exception e) {
// Report the error using the appropriate name and ID.
errors.add("error", new ActionError(e.getMessage()));
Como posso resolver isso?
Vamos lá:
:arrow: Primeiro: nao acho q você testou esse código, pq sua action está pedindo um retorno boolean para metodo validar() do delegante e ele retorna string
:arrow: Segundo: Você não precisa de IF quando está lançando exceptions:
[code]try {
if(usuario == null && nroSerieCredencial == null)
throw new BOException(“Paramentros nulos.”);
if(usuario == null)
throw new BOException(“Usuário nulo”);
if(nroSerieCredencial == null)
throw new CredentialBOException(“nroSerieCredencial nulo”);
return true;
} catch (DAOException e) {
throw new BOException(e.getStackTrace());
return false;
}[/code]
:arrow: Terceiro: O compilador não erra, então nuca perca tempo achando q o Java compilou errado! Joga um brakepoint e debuga passo a passo q deve ter algum detalhe q ele não está lançando a exception para a action.
Abraço
black_fire … valeu pelas dicas, descobri o erro, em um momento eu não estava lançando uma exception gerada.
Eu so não entendi
"Segundo: Você não precisa de IF quando está lançando exceptions: "
como que eu faria…então?
Quando vc lança uma exeption, ela saí do fluxo normal do programa.
Ou ela sai do método se tiver um throws ou ela cai no catch do try. Certo?
Dá uma olhada nesse código:
try {
if(usuario == null && nroSerieCredencial == null) {
throw new BOException("Paramentros nulos.");
} else if(usuario == null) {
throw new BOException("Usuário nulo");
} else if(nroSerieCredencial == null)
throw new CredentialBOException("nroSerieCredencial nulo");
} else {
return true;
}
} catch (DAOException e) {
throw new BOException(e.getStackTrace());
return false;
}
Veja que se o método entrar no bloco do if, o throw vai mandar o fluxo do programa para o catch, então eu não preciso do else.
O código abaixo, vai funcionar exatamente igual ao código acima e é muito mais limpa a leitura (na minha opnião).
[code]try {
if(usuario == null && nroSerieCredencial == null)
throw new BOException(“Paramentros nulos.”);
if(usuario == null)
throw new BOException(“Usuário nulo”);
if(nroSerieCredencial == null)
throw new CredentialBOException(“nroSerieCredencial nulo”);
return true;
} catch (DAOException e) {
throw new BOException(e.getStackTrace());
return false;
}[/code]
sacou?
Super abraço!