tratamento de exceção em java
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.
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.
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
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