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

Você já deve ter observado que é frequente a ocorrência de erros no BancoApplet, principalmente quando queremos incluir uma conta e não temos um cliente selecionado na janela de clientes, ou quando queremos incluir uma transação e não temos uma conta selecionada na janela de conta corrente. Usando tratamento de exceções vamos cuidar mais adequadamente de alguns destes erros. Siga os passos abaixo:

  1. Veja primeiro o Applet em Funcionamento

    Provoque os seguintes erros e veja a ocorrência de exceções:

    Observe no console a sequência de mensagens que é mostrada quando as exceções são levantadas. Por exemplo, quando voce tenta incluir uma transação de crédito sem que a conta esteja selecionada:
    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)
    
    ou quando o ano do campo Data é 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)
    
    Ao final de cada linha de mensagem tem o número da linha de código onde a exceção foi levantada. De cima para baixo, esta exceção foi sendo passada sem tratamento. O código que voce escreverá abaixo esta exceção e não deixa que ela acabe chegando no sistema de runtime.

    Vamos tratar das exeções que ocorrem quando adicionamos uma transação de débito.

  2. Modifique na classe JanelaTransacao o método handleEvent(). De modo a capturar qualquer exceção levantada pelo método adicionaTransacaoDebito(), substituindo:
        } else if (e.target == debite) {
            adicionaTransacaoDebito();
        } else if (e.target == cancela) {
    

    por:

        } 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) {
    
  3. Compile e Remova os Erros

  4. Provoque um erro na operação de lançamento de débito e veja que as mensagems de erro não são mais impressas. Em vez disso é mostrada a mensagem que você acabou de incluir no seu código. Em uma implementação real você usa o bloco da cláusula catch para tomar providências para solucionar o erro, mandar informações mais explicativas para o usuário, etc.


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