//tenta ler esse ultimo arquivotry{ContatoReadercr=newContatoReader(ap.getLastFile());agenda=cr.getMap();}//trycatch(Exceptione)//se não conseguir, cria a agenda{agenda=newHashMap(40,40);}//catchfinally{cr.finalize();}
mas ta dando esse erro:
Error(65,11): variable cr not found in class mypackage1.Agenda
Meu caro, o problema eh que a variável cr foi declarada dentro do corpo do try e está sendo acessada de fora do escopo dela, no corpo do finally. Declare esta variável da seguinte forma:
//tenta ler esse ultimo arquivo ContatoReadercr=null;try{cr=newContatoReader(ap.getLastFile());agenda=cr.getMap();}//try catch(Exceptione){//se não conseguir, cria a agenda agenda=newHashMap(40,40);}//catch finally{if(cr!=null)cr.finalize();}
Pois dessa forma cr estará acessível no corpo do finally.
R
Rubem_AzenhaPJ
teoricamente não deveria estar certo o meu jeito?
falaram que o finnaly serve justamente para isso, fechar conexões, etc que foram abertas pelo try {}…
F
FelipePJ
qndo uma variavel eh declarada dentro de um bloco de codigo, ela nao pode ser acessada fora dele, o o try e o catch sao blocos de codigos diferentes…
M
MurrayBRPJ
nossa oq eu sofria com isso no começo
D
DenisPPinheiroPJ
Isso mesmo Felipe… foi isso q tentei passar em minha resposta… mas vc foi mais direto. O problema reside justamente na declaração da variável em um bloco e uma tentativa de acesso em outro bloco. Como Felipe disse, os blocos do try, do catch e do finally são diferentes.
Outro exemplo, é a declaração de uma variável no cabeçalho do for que só pode ser acessada dentro do corpo deste for.