Buscar

POO 22 excecoes continuacao pratica

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Prática de exceções
Thaís Alves Burity Rocha
15/07/2014
1
Agenda
Repasse de exceção
Exceções no sistema bancário
Boas práticas de programação
Exercícios
Repasse de Exceção
Como já dito, existem 2 formas de tratar exceções
Capturar a exceção, usando blocos try/catch
“Desviar” a exceção
A chamada de um método que lança exceção verificada deve ser tratada
O método transferir chama o método debitar
public void transferir(ContaAbstrata conta, double valor){
 this.debitar(valor);
 conta.creditar(valor);
}
Esse código não compila porque debitar() lança SaldoInsuficienteException
3
Repasse de Exceção: Exemplo
Se o método transferir não usa um bloco try/catch, ele deve declarar a exceção
Ou seja, o código repassa a responsabilidade de tratar a exceção para quem utilizá-lo
public void transferir(ContaAbstrata conta, double valor) 
 throws SaldoInsuficienteException{
 this.debitar(valor);
 conta.creditar(valor);
}
Repasse de Exceção
O repasse pode ocorrer inúmeras vezes, retardando o tratamento da exceção
O ponto de partida de todo programa é o método main, então em alguma hora a exceção vai chegar nele
Como todo método, o main também pode declarar exceção
Nesse caso, quem irá tratar a exceção?
A JVM, encerrando a execução do programa
Exceções no Sistema Bancário
Ainda existem outras situações excepcionais que precisam ser tratadas
Tentar criar um cadastro de conta que já existe
Tentar acessar um cadastro de conta que não existe
Tentar criar um cadastro de cliente que já existe
Tentar acessar um cadastro de cliente que não existe
Sugestão: Criar duas hierarquias de exceção (uma para conta, outra para cliente)
6
Boas Práticas de Programação OO
O correto é nunca deixar o bloco catch vazio
Dessa maneira, será possível saber que a exceção ocorreu
Usar os métodos printStackTrace() e getMessage()
Definir um bloco catch muito genérico é conveniente, mas causa “perda de informação”
Menos código precisa ser escrito
Informações específicas da exceção real que foi lançada só podem ser acessadas mediante cast
É preciso ponderar: Dar tratamento exclusivo quando necessário
Boas Práticas de Programação OO
Não lance ou crie uma subclasse de RuntimeException apenas por conveniência
Se é possível se recuperar de um erro causado pelo seu código, faça-o lançar exceção verificada
Caso contrário, faça-o lançar exceção não-verificada
Quando criar exceções, organize-as em pacotes
No sistema bancário, poderíamos ter 2 pacotes
excecao.conta
excecao.cliente
Boas Práticas de Programação OO
Quando criar exceções, organize-as em hierarquias
Usar polimorfismo
Exemplo:
ContaException
ContaJaExisteException
ContaNaoExisteException
SaldoInsuficienteException
Exercícios
Lista 8, Questão 9
Atualize a implementação dos métodos creditar, debitar e transferir no sistema bancário, para impedir que estes aceitem valores negativos como argumento, quando forem chamados.
Para tanto, utilize a exceção não-verificada IllegalArgumentException da API de Java.
Lista 8, Questão 13 (letra b)
Crie uma classe denominada ArquivosUtil, que contém um método para criar uma cópia de um arquivo texto.
A cópia deverá ter o nome do arquivo original acrescido do sufixo “-copia”.
Para recuperar o nome do arquivo original, utilize o método public String getName() da classe File.
Observação: O arquivo a ser copiado deverá ser passado como parâmetro e todas as exceções verificadas deverão ser capturadas. Por fim, não esqueça de fechar o(s) recurso(s) utilizado(s) e nem de escrever código para testar a sua classe.
Lista 8, Questão 13: Orientações
É possível ler um arquivo texto utilizando a classe Scanner, tal como feito para ler do teclado.
É possível escrever em um arquivo texto utilizando o método public void write(String s) da classe FileWriter (java.io.FileWriter).
Quando todo o conteúdo desejado tiver sido “escrito”, é necessário chamar o método flush() para que a escrita realmente seja realizada
Construtor da classe FileWriter:
FileWriter(File file)
Recebe como parâmetro uma referência para o arquivo, cuja escrita será feita a partir do seu início

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais