Para esse laboratório vamos usar as mesmas classes do laboratório 8, então
aproveite para terminar esse laboratório caso ainda não tenha acabado. O objetivo do
laboratório 9 é incluir sinalização e tratamento de erros nas classes do último laboratório.
1. A primeira tarefa é impedir que contas fiquem no vermelho. Crie uma nova exceção não-checada
chamada SaldoInsuficiente. Uma tentativa de retirar dinheiro além do saldo da conta deve
lançar essa exceção. Modifique a classe ContaCorrente para fazer isso. O que acontece caso se tente transferir
um valor maior que o saldo restante da conta?
Relacionado à última pergunta: qual o problema com a seguinte implementação do método transfere?
É necessário mudar alguma coisa na implementação de ContaCorrenteLanc para ter a verificação
de saldo nela? Por quê?
2. Escreva um método void processa(BufferedReader buf) que lê uma sequência de transações de
buf, uma transação por linha (usando o método readLine() de BufferedReader), convertendo
cada linha de string para double com Double.parseDouble e fazendo uma retirada se o número
resultante for menor do que 0 ou depósito se for maior do que 0. Capture e trate os erros SaldoInsuficiente
e NumberFormatException: em um erro SaldoInsuficiente você deve imprimir com System.out.println uma mensagem
informando que não houve saldo para a retirada, e quanto seria retirado, e erros NumberFormatException
devem ser ignorados. O método processa deve simplesmente propagar erros IOException resultantes
da leitura de buf.
Teste processa com o seguinte código:
3. Escreva o código de tratamento de exceções para o programa a seguir, seguindo os comentários
no método actionPerformed. O usuário deve ser informado caso as exceções citadas aconteçam,
usando o método mostraMensagem da classe Transacoes.