Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Essa forma de usar o try-resource é usual?

Implementei Autocloseable na classe Conta e nas suas filhas (ContaCorrente/ ContaPoupanca) foi codificado o metodo close com um sysout escrito "fechado". Fiz o teste com os números negativos jogando um exceção do tipo IllegalArgumentsExc.

public class TesteContas {

public static void main(String[] args) throws SacaException{

    try(ContaCorrente cc = new ContaCorrente(991, 7761)) {
        try(ContaPoupanca cp = new ContaPoupanca(881, 331)) {
            cc.deposita(210.0);
            cp.deposita(350.0);
            cp.transfere(cc, 200.0);
        }
    }catch(IllegalArgumentException ex) {
        ex.printStackTrace();
    }

}
4 respostas

Oi Drvw

Um cuidado que precisa tomar nesse caso é não deixar o código "macarronico", exemplo:

            try (PrintWriter writer = new PrintWriter(new File("test.txt"))) {
                try (PrintWriter writer2 = new PrintWriter(new File("test.txt"))) {
                    try (PrintWriter writer3 = new PrintWriter(new File("test.txt"))) {
                        try (PrintWriter writer4 = new PrintWriter(new File("test.txt"))) {
                            System.out.println("");
                        }
                    }
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }

Olá otávio, tudo bom ?

entendi e qual a forma certa seria ?

Oi Drvw

Você pode abrir vários resources dentro do mesmo try, exemplo:

        try (PrintWriter writer = new PrintWriter(new File("test.txt"));
             PrintWriter writer2 = new PrintWriter(new File("test.txt"));
             PrintWriter writer3 = new PrintWriter(new File("test.txt"));
             PrintWriter writer4 = new PrintWriter(new File("test.txt"));
        ) {
            System.out.println("");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
solução!

Opa Otávio, obrigado rapaz, nunca tinha visto dessa forma.

Abraço.