Podemos querer definir um bloco de código para ser executado ao sair de um bloco try/catch.
Exceções podem causar erros que encerram métodos prematuramente, deixando recursos como conexões ou arquivos abertos.
O bloco finally é usado para garantir que ações como o fechamento de recursos sejam realizadas, independentemente de ocorrer uma exceção.
O bloco finally é incluído ao final de uma sequência try/catch.
try {
// bloco de código cujos erros estão sendo monitorados
}
catch (TipoExceç1 obEx) {
// tratador de TipoExceç1
}
catch (TipoExceç2 obEx) {
// tratador de TipoExceç2
}
//...
finally {
// código de finally
}
O bloco finally é sempre executado ao sair de um bloco try/catch, independentemente da causa.
Seja o bloco try finalizado normalmente ou devido a uma exceção, o código em finally será o último a ser executado.
O bloco finally também é executado se o código no bloco try ou catch retornar do método.
Usando throws
- Quando um método gera uma exceção que não trata, ele deve declará-la em uma cláusula throws.
tipo-ret nomeMét(lista-parâm) throws lista-exceç {
// corpo
}
lista-exceç é uma lista separada por vírgulas com as exceções que o método pode lançar para fora dele.
Exceções que são subclasses de Error e RuntimeException não precisam ser especificadas na cláusula throws; o Java as assume automaticamente.
Outras exceções precisam ser declaradas na cláusula throws, caso contrário, causam erro de compilação.
Exemplo anterior: ao usar entradas do teclado, a cláusula throws java.io.IOException foi adicionada ao método main() para tratar a exceção de I/O.
O método prompt() pode gerar uma IOException ao ler do teclado, mas não a trata internamente, usando throws para delegar o tratamento para o método chamador.
IOException é totalmente qualificada com o nome do seu pacote, java.io.
O sistema de I/O do Java está no pacote java.io, onde IOException é definida.
Também seria possível importar java.io e referenciar IOException diretamente.
Top comments (0)