17.4. Tratamento de exceções e a hierarquia de exceções em Java: Tipos de exceções (checked e unchecked)
Página 106 | Ouça em áudio
17.4. Tratamento de Exceções e a Hierarquia de Exceções em Java
O tratamento de exceções é um aspecto fundamental na programação em Java. Uma exceção é um evento que ocorre durante a execução de um programa e que interrompe o fluxo normal de instruções. O mecanismo de exceções em Java fornece uma maneira de separar o código de tratamento de erros do código regular e permite que um método retorne informações sobre problemas ocorridos durante a execução.
Tipos de Exceções em Java
Em Java, as exceções são divididas em duas categorias principais: checked exceptions e unchecked exceptions.
Checked Exceptions
As checked exceptions são aquelas que o compilador exige que sejam tratadas ou declaradas no método que as gera. Elas são usadas para problemas que o programador deve antecipar e tratar adequadamente, geralmente são problemas externos ao controle do programa, como problemas de I/O (Input/Output), falhas de rede, etc. Exemplos de checked exceptions incluem IOException
, SQLException
e ClassNotFoundException
.
Unchecked Exceptions
Já as unchecked exceptions incluem as subclasses de Error
e RuntimeException
. Estas são exceções que o compilador não exige que sejam tratadas ou declaradas, e geralmente são resultantes de erros no próprio código, como acessar um índice fora dos limites de um array (ArrayIndexOutOfBoundsException
) ou tentar acessar um objeto através de uma referência nula (NullPointerException
).
Hierarquia de Exceções em Java
A classe base para todas as exceções em Java é a Throwable
. A partir dela, derivam duas subclasses importantes: Error
e Exception
. A classe Error
é projetada para situações que normalmente não são esperadas para serem capturadas ou tratadas pelo seu programa, como OutOfMemoryError
ou StackOverflowError
. Já a classe Exception
é a base para todas as exceções que podem ser tratadas e possuem duas categorias principais: checked exceptions e unchecked exceptions, como mencionado anteriormente.
Tratamento de Exceções
O tratamento de exceções em Java é feito por meio de blocos try
, catch
e finally
. O bloco try
contém o código que pode gerar uma exceção, enquanto o bloco catch
é usado para capturar e tratar a exceção. O bloco finally
, que é opcional, contém código que é sempre executado após o bloco try
, independentemente de uma exceção ter sido lançada ou não.
try { // código que pode lançar uma exceção } catch (TipoExcecao1 e) { // tratamento para TipoExcecao1 } catch (TipoExcecao2 e) { // tratamento para TipoExcecao2 } finally { // código que é sempre executado após o bloco try, com ou sem exceções }
É possível capturar múltiplas exceções em um único bloco catch
usando o operador pipe (|), isso é útil quando o mesmo bloco de código pode gerar exceções diferentes, mas o tratamento para todas elas é o mesmo.
try { // código que pode lançar exceções diferentes } catch (TipoExcecao1 | TipoExcecao2 e) { // tratamento comum para TipoExcecao1 e TipoExcecao2 }
Propagação de Exceções
Quando uma exceção é lançada e não é capturada no mesmo método, ela se propaga para cima na pilha de chamadas de métodos até encontrar um bloco catch
que possa tratá-la. Se nenhum bloco catch
adequado for encontrado, o programa é terminado e a pilha de chamadas é impressa, o que ajuda no diagnóstico do problema.
Boas Práticas no Tratamento de Exceções
Quando se trata de exceções, é importante seguir algumas boas práticas:
- Trate apenas exceções que você pode realmente lidar.
- Evite capturar
Throwable
,Exception
ouRuntimeException
a menos que seja absolutamente necessário, pois isso pode capturar exceções não previstas e esconder bugs. - Não use exceções para controle de fluxo em seu programa.
- Forneça mensagens de erro úteis e detalhadas.
- Limpe recursos em um bloco
finally
ou use o recurso de try-with-resources do Java 7 em diante para garantir que os recursos sejam fechados automaticamente após o uso.
O tratamento eficaz de exceções é essencial para construir programas robustos e confiáveis. Ao compreender os tipos de exceções, a hierarquia de exceções e as práticas recomendadas, você estará bem equipado para lidar com os desafios que surgem durante a programação em Java.
Agora responda o exercício sobre o conteúdo:
Qual das seguintes afirmações é verdadeira sobre o tratamento de exceções em Java?
Você acertou! Parabéns, agora siga para a próxima página
Você errou! Tente novamente.
Próxima página do Ebook Gratuito: