Encontrar método fora de bloco try/catch tem preço?
Posted in Bugs on April 9th, 2010 by Fábio Queiroz – Be the first to commentHoje encontrei uma pérola feita por algum programador.
Em uma classe que abstrai métodos e implementa outros para serem reutilizados por funcionalidades de CRUD, encontrei um método “insert” com o seguinte código:
public void inserir() {
LogUtil.debug(LOGGER, ">> inserir");
inserirCadastro();
resetFormulario();
try {
this.lista = Collections.emptyList();
ManagerMessageUtils.addAcaoSucesso(ManagerMessageUtils.INSERIR, getNomeEntidade());
}
catch (AuthorizationException e) {
ManagerMessageUtils.naoAutorizado();
}
catch (Exception e) {
ManagerMessageUtils.addAcaoErro(ManagerMessageUtils.INSERIR, getNomeEntidade());
}
finally {
LogUtil.debug(LOGGER, "<< inserir");
}
}
Notaram onde está o problema?
Neste código, qualquer erro lançado pelo método “inserirCadastro” (método que deve ser implementado para fazer persistência de dados) não será capturado pelas exceções definidas abaixo, caso também não sejam implementadas no método “inserirCadastro”.
Mas de qualquer jeito, uma implementação infeliz.
