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 ; } }
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).
-
-
- 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
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