JDBC metodo declarado com throws Exception sem finally

3 respostas
N

Olá
nesse metodo abaixo não tem o metodo finally, ao executar a Query caso venha da erro
a connection será fechada? ou nao?

finally

public Car getCarrId (int id)  throws Exception{

Connection con = dbConn.obtainConnection();

Statement stm = con.createStatement();

ResultSet rs = stm.executeQuery("SELECT * FROM TB_carr WHERE id= "+id);
rs.next();
	Car car = getCar(rs);	

	
	rs.close();
	stm.close();
	con.close();



	return car;

}

3 Respostas

Felagund

não.
Quando o erro ocorre o Java interrompe na hora a execução. Assim a conexão se mantem ativa.

[]'s

A

Se der erro antes do con.close() acredito que a conexão não seja fechada.
Mas, eu costumo colocar meu .close() fora do try…catch. Não sei se é a melhor prática mas…

robinsonbsilva
Connection con = null; 
   Statement stm = null; 
   Statement stm = null; 
   ResultSet rs == null; 

try { 
   con = dbConn.obtainConnection(); 
   stm = con.createStatement(); 
   stm = con.createStatement(); 
   rs = stm.executeQuery("SELECT * FROM TB_carr WHERE id= "+id); 
   rs.next(); 
   Car car = getCar(rs);
} catch (SQLException e) {
   throw new DAOException(e.getMessage());  //TRATA ERRO
} finally {
   ConnectionPool.closeAll(null, stm, rs); //FECHA
   rs = null;
   stm = null;
}

	public static void closeAll(Connection conn) {
		try {
			if (conn != null) {
				conn.close();
			}
		} catch (Exception e) {
			String errorMsg = "Nao foi possivel fechar a conexao com o banco";
			DAOException.print(e, errorMsg);
		}
	}

	public static void closeAll(Connection conn, Statement stmt) {
		try {
			if (stmt != null) {
				stmt.close();
			}
		} catch (Exception e) {
			String errorMsg = "Nao foi possivel fechar o Statement";
			DAOException.print(e, errorMsg);
		}
		closeAll(conn);
	}

	public static void closeAll(Connection conn, Statement stmt, ResultSet rs) {
		try {
			if (rs != null) {
				rs.close();
			}
		} catch (Exception e) {
			String errorMsg = "Nao foi possivel fechar o Resultset";
			DAOException.print(e, errorMsg);
		}
		closeAll(conn, stmt);
	}
Criado 29 de abril de 2009
Ultima resposta 29 de abr. de 2009
Respostas 3
Participantes 4