O tratamento de exceções em Java ocorre transferindo a execução normal de um programa para o devido código de tratamento de exceções quando uma exceção ocorre. Para realizar o desvio da execução do programa utiliza-se as palavras chaves
try
, catch
ou finally
.Instrução
try
A sintaxe da instrução
try
se dá da seguinte forma:
try {
//código passível de exceções
}
Quando uma exceção é lançada em um bloco
try
o restante do código após à exceção é ignorado, transferindo o fluxo de execução para o tratamento dessa exceção.Instrução
catch
A instrução que captura (recebe) e trata da exceção lançada pela instrução
try
é a catch
. Cada instrução try
pode ter zero ou mais instruções catch
s. A sintaxe de uma instrução catch
é:
catch(<TipoDaExceção> <exceção>) {
//código de tratamento de exceção
}
Os blocos
catch
s devem ser posicionados logo após o término do bloco try
, sem linhas de comando ou blocos entre eles. Assim como um bloco try
e um catch
devem ser dispostos juntos, dois blocos catch
s também devem seguir este mesmo padrão. Deve-se atentar, porém, para a ordem dos blocos catch
s. Blocos catchs devem ser dispostos de forma que primeiro estejam as exceções específicas e por último as gerais, pois quando uma exceção é lançada no bloco try
, os blocos catch
s são verificados um por um seguindo a sequencia das linhas do código. Assim se uma exceção específica for colocada após uma geral a específica nunca será executada.Instrução
finally
Apesar das instruções
try
e catch
serem ótimas elas não são perfeitas. Quando uma exceção é lançada em uma instrução try
, todo o restante do código é descartado e o fluxo é transferido para a instrução catch
, assim se for necessário, por exemplo, de uma reinicialização de variáveis, ou desalocação de recursos. A instrução finally
resolve este problema, pois será sempre excecutada após os comandos (a qualquer ponto) de um bloco try
, lançando ou não uma exceção. A instrução finally
é tão poderosa que até mesmo antes de um comando return
do bloco try
ela é executada. Desta forma, o bloco finally
é o perfeito bloco para se fechar sockets, e realizar qualquer operação de limpeza que seu código necessite.Comando
try-catch-finally
Quando um bloco
try
é escrito, pelo um bloco catch
ou finally
deverá ser escrito. Como mostra a tabela abaixo: try {} | - | - | INVÁLIDO |
try {} | catch {} | - | VÁLIDO |
try {} | finally {} | - | VÁLIDO |
try{} | catch {} | finally{} | VÁLIDO |
try{} | finally{} | catch {} | INVÁLIDO |
catch {} | finally{} | - | INVÁLIDO |
catch {} | - | - | INVÁLIDO |
finally{} | catch {} | - | INVÁLIDO |
finally{} | - | - | INVÁLIDO |
Parabens, otima expliacação!
ResponderExcluirObrigada, às ordens, se houver alguma dúvida pode perguntar.
ResponderExcluirNossa adorei seu blog... fala sobre assuntos diversos e suas explicações são fáceis de entender.. So uma coisinha o design dele ta meio feiosinho.. mas o conteúdo ta de Parabéns... ;)
ResponderExcluirO design não importa pra mim porque criei esse blog apenas com a intenção de documentar alguns estudos meus. :)
ExcluirFeito por mim e para mim. ;)