Tratamento de exceção em java

12
Tratamento de Exceção em Java Marques Henrique Amaro Natasha Silveira Pinheiro Disciplina de Projeto Detalhado de Software Prof. Camilo Camilo Almendra

Transcript of Tratamento de exceção em java

Tratamento de Exceção em Java

Marques Henrique Amaro

Natasha Silveira Pinheiro

Disciplina de Projeto Detalhado de Software Prof. Camilo Camilo Almendra

Introdução

• Exceção

• Qualquer evento não usual que é detectável por hardware ou por software que possam requerer um processamento especial.

• Tratamento de Exceção

• Processamento especial que pode ser requerido quando uma exceção é detectada.

Motivação

• Como avisar aquele que chamou o método de que ele não conseguiu fazer aquilo que deveria?

• Um método pode detectar uma falha, mas não estar apto a resolver sua causa, devendo repassar essa função a quem saiba.

Exceções em Java

• A linguagem Java dá suporte ao tratamento de exceções

• Exceções são representadas por classes

• São lançadas pelo comando throw

• São tratadas pela estrutura try-catch-finally

• Um método que lance uma exceção deve declarar isso explicitamente.

• Para umas classe representar uma exceção, ela deve pertencer a uma certa hierarquia. A classe raiz de todas as exceções é java.lang.Throwable.

Hierarquia de Exceções

Estrutura try-catch-finally

• Try

• É utilizado para indicar um bloco de código que possa ocorrer uma exceção e que a execução pode ser cancelada a qualquer momento e continuar no catch.

• Catch

• É utilizado para manipular as exceções, ou seja, tratar o erro. Deve aparecer após o try.

• Finally

• Será executado depois do bloco try/catch e finaliza a sequência de comandos do sistema. É opcional. É normalmente usado para liberação de recursos.

Exemplo

Sem Tratamento de Exceção

• A conta precisa avisar que o saldo não é suficiente

• Além disso, precisa tratar o caso em que o valor passado é inválido

Com Tratamento de Exceção

• O código ficou mais limpo e mais propício a mudanças

Continuando...

• O exemplo usado anteriormente é bom, caso o tratador seja quem o que o chama o método, mas imagine numa aplicação real, onde o fedback do usuário acontece na interface. As exceções checkeds deixariam o código muito acoplado.

• Por exemplo: uma classe A chama uma classe B, que chama uma classe C, que chama saque de conta.

• O que fazer?

• Isso tem nome. São exceções de alto nível, logo devem ser tratadas na camada mais externa da aplicação. Usariamos uma Unchecked Exception.

Conclusão

• Tratar exceções não é apenas tratá-las, mas sim tratar no lugar correto e da forma correta.

• O tratamento de exceções, quando feito da forma mais adequada, deixa o código limpo e sem obscurecer a lógica.

Referências

• Trabalhando com Exceções em Java. Disponível em: <http://www.devmedia.com.br/trabalhando-com-excecoes-em-java/27601>. Acesso em: 7 nov. 2014

• MARTIN, R. C. Código Limpo: habilidades práticas do Agile Software. Rio de Janeiro: Alta Books, 2011.

• Caelum, Apostila Java e Orientação a Objetos. Disponível em: <http://www.caelum.com.br/apostila-java-orientacao-objetos/excecoes-e-controle-de-erros/#11-1-motivacao>. Acesso em: 7 nov. 2014

• AULA 15 – Exceções – IF669, Cin-UFPE. Disponível em: <http://www.youtube.com/watch?v=0123L6skOsM>. Acesso em: 7 nov. 2014