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

Upload: marques-amaro

Post on 18-Jul-2015

112 views

Category:

Education


2 download

TRANSCRIPT

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