-
Antes do JDK 7, os arquivos eram fechados explicitamente usando o método
close()
, uma prática comum em códigos existentes. -
O JDK 7 introduziu o
try-with-resources
, que automatiza o fechamento de recursos, como fluxos de arquivo. -
A principal vantagem do try-with-resources é prevenir vazamentos de memória e garantir que os recursos sejam liberados quando não são mais necessários.
-
A estrutura básica do
try-with-resources
é:
try (especificação-recurso) {
// usa o recurso
} -
A
especificação-recurso
declara e inicializa um recurso, que é fechado automaticamente ao final do bloco try. -
Não é necessário chamar
close()
explicitamente, pois o recurso é gerenciado automaticamente. -
O try-with-resources pode incluir cláusulas catch e finally.
-
Pode ser utilizado apenas com recursos que implementam a interface
AutoCloseable
, que inclui as classes de fluxo, comoFileInputStream
eFileOutputStream
. -
Um exemplo de implementação do try-with-resources é uma versão modificada do programa ShowFile.
-
No programa, o arquivo é aberto usando a instrução
try-with-resources
, onde umFileInputStream
chamadofin
é declarado. -
A variável
fin
é local ao blocotry
e é criada ao entrar nele. -
Ao sair do bloco
try
, o arquivo associado afin
é fechado automaticamente, evitando a necessidade de chamarclose()
explicitamente. -
Essa abordagem oferece a vantagem do gerenciamento automático de recursos, evitando o esquecimento do fechamento de arquivos.
-
O recurso declarado na instrução
try
é implicitamente final, não podendo ser redefinido após a criação. -
O escopo do recurso é limitado ao bloco
try-with-resources
. -
É possível gerenciar múltiplos recursos em uma única instrução
try
, separando cada especificação de recurso com ponto e vírgula. -
Um exemplo é fornecido, mostrando como modificar o programa
CopyFile
para usartry-with-resources
para gerenciar tantofin
quantofout
.
-
Vantagens do try-with-resources:
-
Recursos como arquivos são fechados automaticamente ao final do bloco try.
-
Código mais conciso e otimizado em comparação com a abordagem tradicional.
-
Tratamento de exceções:
-
Exceções durante o fechamento de recursos são suprimidas, mas não perdidas.
-
Ambas as exceções (original e de fechamento) podem ser acessadas através da lista de exceções suprimidas.
-
Importância do conhecimento da abordagem tradicional:
-
Necessário para manutenção de código legado que não usa try-with-resources.
-
Importante para trabalhar em ambientes que não suportam JDK 7 ou versões posteriores.
-
Conclusão:
-
try-with-resources é recomendado para gerenciamento otimizado e robusto de recursos.
-
Conhecimento da abordagem tradicional é essencial para programadores.
暂无评论内容