Exceções - Try - Catch - Finally

A partir de agora vamos aprender a criar exceções geradas por erros de entrada do usuário, ou seja, vamos identificar os erros e corrigí-los. Para isso utilizaremos um bloco de comando chamado "Try-Catch".

Estas exceções aparecem para nos sinalizar que houve alguma falha/erro na aplicação e após causa uma interrupção imediata na sua execução.

Na Linguagem de Programação(principalmente as Orientadas a Objetos) possuem suporte para a utilização de exceções.

Principais Métodos

  • void printStackTrace() - Lista uma mensagem da pilha de erro encontrada em um exceção
  • String getMessage() - Retorna uma mensagem que descreve o erro que ocorreu na exceção.
  • toString() - Retorna uma breve descrição da exceção.

Lançando Exceções Através da Cláusula Throws

No java, podemos lançar exceções utilizando métodos com a cláusula throws seguida do tipo de exceção que pode ser gerada conforme imagem:



Blocos Try Catch

Quando possuimos uma exceção devemos protegê-la com um bloco de comando chamado try. Podemos utilizar inúmeras instruções dentro de um bloco de comando try. Já na cláusula catch ela é responsável por gerar e tratar as exceções dentro de blocos de comando no try anterior. Veja na imagem abaixo:



Capturando mais de uma Exceção

Em geral também podemos utilizar dois ou mais blocos de "catch", assim podemos tratar estas exceções ou mais a partir de um único "try". A imagem a seguir mostra como ficaria um "try" com dois tratamentos de exceções diferentes e um terceiro com um tratamento de exceção direcionado para qualquer tipo de exceção que não se encaixe nos dois catch iniciais.

Importante: Devemos observar a ordem ao declarar os "Catch" na aplicação. Nunca deve-se colocar um bloco catch tratando uma Exception antes de outras Exceptions, pois a Exception é o pai das exceções.



Multi-Catch em Java

No Java a partir do JDK7(Java Development Kit) existe a possibilidade da utilização de Multi-catch, ou seja, podemos inserir duas ou mais exceções em um único catch, conforme a imagem seguir:



Aninhamento de Exceções

Também se necessário podemos colocar dentro de um bloco try outro try-catch, fazendo o tratamento de exceções de forma aninhada. Ao tratar de forma aninhada podemos individualizar e assim especializar as mensagens de erro, fazendo assim que o usuário indentifique de forma fácil o que ele realmente errou. Segue imagem exemplo:



A Cláusula Finally

A cláusula finally é opcional, ou seja, você pode criar um bloco tratador try-catch sem finally. Se você optar por colocar a instrução finally ela será sempre executada, mesmo que não ocorra uma exceção dentro do bloco try.

Na prática o finally pode e deve ser utilizado para fechar conexões de rede, conexão com o banco de dados, escrita e leitura de arquivos, entre outros.



Downloads

Deseja ir onde ?