Baixe o app para aproveitar ainda mais
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
Compartilhar