Bloco try..with do JAVA 7

Bom dia!
Eu posso fazer assim no JAVA 7?

int codCadastro = 345;

try (Connection con = ConnectionFactory.getNewConnection();
      PreparedStatement ps;
      ResultSet rs; ) {

      String sql = "select * from cadastro where id = ?";
      ps = con.prepareStatement(sql);
      ps.setInteger(1, codCadastro);
      rs = ps.executeQuery();

      if (rs.next()) {
          //....
   
      }


} catch (Exception e) {
}

Ou seja, declarar objetos que quero fechar no try, sem inicializá-los dentro do mesmo? (vide os objetos rs e ps).
Gostaria de saber porquê eu acabo setando os demais objetos dentro do try…[/quote]

vc nao pode fazer isso, os objetos devem ser inicializados sempre dentro do try. e lembrando que o try nao eh um metodo e nunca vai receber parametros.

So uma duvida, porque vc nao quer inicializa-los dentro do try?

As vezes eu tenho um bloco de código para executar antes de inicializá-los, como esse no exemplo:

String sql = "select * from cadastro where id = ?";  
ps = con.prepareStatement(sql);  
ps.setInteger(1, codCadastro); 

//o bloco acima deve ser executado antes de iniciar o ResultSet
rs = ps.executeQuery();  

Esse exemplo é bem vago, mas às vezes tenho que completar a query sql ou realizar validações antes da consulta, e com isso vai 4…6…8 ou mais linhas de código antes de ps = con.prepareStatement(sql);
Ou preciso setar vários parâmetros no PreparedStatement antes de iniciar um ResultSet: ps.setInteger(1, 2569); ps.setString(2, “(11) 3636-5689”); ps.setString(3, “Abreu de Almeida”); …

Ou seja, tenho uma certa quantidade de código intermediário antes de iniciar cada objeto…
Como eu faria? Iria ter que executar todo o código intermediário dentro do try ( … )?

Ok… achei que aquele tópico estava “morto”, porquê a última mensagem foi em 2010…
Daí criei um novo tópico.

Acho que o try with aninhado resolveria melhor o problema, no caso de ter muitas instruções intermediárias. Obrigado

Favor não duplicar sua pergunta.

Você fez o mesmo questionamento em Java 7: Try-with-resources ou Automatic Resource Management

Você pode, como alternativa, aninhar os try-with-resource.