Prática Simulada: Tratando Exceções no BancoApplet (Parte 2)

O tratamento de exceções que acabamos de fazer fazemos não distingue entre os diversos tipos de erros que ocorreram na inclusão da transação. Você pode sofisticar o tratamento de exceções aninhando cláusulas catch, que captura exceções de tipos distintos. Siga os passos abaixo:

  1. Mantenha a alteração que já foi feita. Não sobreponha os arquivos!

  2. Perceba que tem pelo menos dois tipos de exceções distintas levantadas na inclusão de transações. Uma delas é esta, levantada quando você não seleciona um cliente:
    java.lang.NullPointerException
    	at Banco.adicionaTransacaoCredito(Banco.java:38)
    	at BancoApplet.adicionaTransacaoCredito(BancoApplet.java:143)
    	at JanelaTransacao.adicionaTransacaoCredito(JanelaTransacao.java:101)
    	at JanelaTransacao.handleEvent(JanelaTransacao.java:69)
    	at java.awt.Component.postEvent(Component.java:838)
    	at java.awt.Component.postEvent(Component.java:845)
    	at sun.awt.motif.MButtonPeer.action(MButtonPeer.java:39)
    	at java.lang.Thread.run(Thread.java:289)
    
    outra ocorre quando um campo da Data ou do Valor é invalido:
    java.lang.IllegalArgumentException: year out of range.
    	at java.util.Date.(Date.java:158)
    	at java.util.Date.(Date.java:114)
    	at JanelaTransacao.adicionaTransacaoCredito(JanelaTransacao.java:95)
    	at JanelaTransacao.handleEvent(JanelaTransacao.java:69)
    	at java.awt.Component.postEvent(Component.java:838)
    	at java.awt.Component.postEvent(Component.java:845)
    	at sun.awt.motif.MButtonPeer.action(MButtonPeer.java:39)
    	at java.lang.Thread.run(Thread.java:289)
    
    Vamos tratar separadamente destas duas exeções, implementando o código abaixo:

  3. Modifique na classe JanelaTransacao o método handleEvent(). De modo a selecionar qual o tipo (classe) específico de exceção levantada. Substitua:
        } else if (e.target == debite) {
    	try {
                adicionaTransacaoDebito();
            } catch (Exception exception) {
                System.out.println("Erro Incluindo Transacao de Debito");
                System.out.println("Inclusao Abortada");
            }
        } else if (e.target == cancela) {
    
    por:
        } else if (e.target == debite) {
            try {
                adicionaTransacaoDebito();
            } catch (IllegalArgumentException exception) {
                System.out.println("Dado Invalido "+exception);
            } catch (NullPointerException exception) {
                System.out.println("Conta Bancaria Nao Selecionada");
            } catch (Exception exception) {
                System.out.println("Erro Incluindo Transacao de Debito "+
                   exception);
            }
        } else if (e.target == cancela) {
    
  4. Compile e Remova os Erros

  5. Provoque os erros específicos e gerais na operação de lançamento de díbito e veja que mensagems de erro distintas são impressas.

[Back] [Forward] [Index]
Curso Introdutório de Java - Copyright, 1996 Recife Java Team