Java 13 Excecoes

Embed Size (px)

Citation preview

  • 1. Excees
      • Regis Pires Magalhes
    • [email_address]

2. Problema 1

  • Como evitar que uma data invlida seja armazenada no atributo data?

3. Solues

  • Desconsiderar a operao caso uma data invlida seja identificada
    • Ficamos na incerteza do sucesso ou no da operao.
  • Mostrar uma mensagem de erro
    • A classe fica atrelada interface com o usurio.
  • Retornar um cdigo de erro
    • Os clientes precisam fazer testes exatamente aps a chamada do mtodo. Alm disso, para cada chamada, um novo teste precisa ser realizado.
    • Retornar um valor especial de erro quando o mtodo j retorna algum valor significativo deselegante e pode confundir quem est usando o mtodo.

4. Problema 2 // ... Conta minhaConta =newConta(); minhaConta.deposita(100); minhaConta.setLimite(100); minhaConta.saca(1000); //o saldo -900? 100? 0? // A chamada ao mtodo saca funcionou? 5. Solues public booleansaca( doublequantidade) { if(quantidade >this .saldo +this .limite) {System.out.println( "Saque fora do limite!" ); return false ; }else{ this .saldo =this .saldo quantidade; return true ; } }

  • Mostrar mensagem de erro
  • Retornar cdigo de erro

6. Problema 2

    • Como sinalizar quando o usurio passou um valor negativo?
    • Uma soluo alterar o retorno de boolean para int, e retornar o cdigo do erro que ocorreu.
      • Isto considerado uma m prtica (uso de magic numbers).
    • Desvantagens:
      • Perde-se o retorno do mtodo;
      • O valor retornado mgico (s legvel perante extensa documentao)
      • No obriga o programador a tratar esse retorno, e no caso de esquecer isso seu programa continuar rodando.

7. Excees

    • Uma exceo representa uma situao que normalmente no ocorre e representa algo de estranho ou errado no sistema.
    • Indicam algum tipo de condio excepcional (como um erro) ocorrido ao programa.
      • Exemplos de situaes que geram excees:
        • ndice de array fora dos limites
        • Overflow numrico
        • Diviso por zero
        • Estouro de memria

8. Por que usar excees?

    • Separam a parte de lgica do sistema da parte de tratamento de erros.
      • Evitam a criao de um cdigo especfico para cada situao em que um tipo de erro ocorre.
      • Concentram o tratamento de erros em partes especficas do cdigo, facilitando sua legibilidade e manuteno.

9. Excees

    • Uma exceo lanada interrompe o fluxo normal do programa.
      • Se o mtodo onde ela ocorrer no a capturar, ela ser propagada para o mtodo que chamar esse mtodo e assim por diante.
      • Se ningum capturar a exceo, ela ir causar o trmino da aplicao.
      • Se em algum lugar ela for capturada, o controle pode ser recuperado.

10. Pilha de Execuo public classTesteErro { public static voidmain(String[] args) { System. out .println( "inicio do main" ); metodo1 (); System. out .println( "fim do main" ); } public static voidmetodo1() { System. out .println( "inicio do metodo1" ); metodo2 (); System. out .println( "fim do metodo1" ); } public static voidmetodo2() { System. out .println( "inicio do metodo2" ); int [] array =new int [10]; for( inti = 0; i