Tenho uma dúvida meio tosca… bom seguinte, tenho esse seguinte trecho de código:
public String inserirTipoConsumo(TipoConsumo tipoConsumo) throws Exception{
String msg = null;
Connection con = null;
PreparedStatement ps = null;
try {
con = dataSource.getConnection();
String sql = "INSERT INTO tipoConsumo (tipo_cons) VALUES (?)";
ps = con.prepareStatement(sql);
ps.setString(1, tipoConsumo.getTcons_tipo());
ps.execute();
msg = "Sucesso na Inserção";
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
try {
if (ps != null) //ele somente fecha o statement se ele for diferente de nulo, entao tem q fazer essa valida��o
ps.close();
if (con != null) //mesm coisa pra conexao
con.close();
} catch (SQLException e) { e.printStackTrace(); } //catch obrigatorio pois pode ocorrer uma exce��o
}
return msg;
Bom no meu catch tem um THROW e, qual o intuito é lançar a excessão pra frente pra avisar os métodos do view que teve uma exceção e exibir uma mensagem na tela… mas notem que existe um finally para fechar conexão no banco. Então minha dúvida é seguinte, se ele causar uma exceção, ele entra no catch e no finally? ou por causa do throw e, ele não entraria no finally e minha conexão estaria aberta?