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