Duvida Com exceção try/catch

9 respostas
S

Olá amigos,

Procurei pelo forum sobre minha dúvida mas não ficou exatamente esclarecida essa minha duvida, por isso criei um novo,

bem, minha duvida é, por exemplo até onde eu sei ( e sei muito pouco, kkk), o try/catch tratam exceções assim:

try{
// meu codigo que pode vir a dar um erro
 }catch
//codigo que faz alguma coisa pra tratar esse erro/exceção
}
finally{
// código que sempre será executado em um método ou construtor
// caso acontece um erro/exceção ou não.
         }

1ª pergunta minha afirmação acima procede?

2ª caso sim (ou não) gostaria de saber se é possivel eu voltar a execução devolta para o try após acontcer uma exceção( que será tratada pelo catch. ex:

try{

//vamos imaginar que eu tenha um método aqui, que copie 3 arquivos através de um loop com while.e no segundo arquivo o //programa se depara com caminho não existente, vai acontecer a excecão certo?

}

catch(IOexception e){

e.PrintStackTrace();
/*vai exibir os detalhes da exceção, qual linha está o erro, etc. 
 mas eu gostaria de saber , se eu posso colocar aqui algo que faça ele voltar novamente ao looping while que está no try( e parou 
no 2º arquivo, e continua-lo, fazendo assim a cópia dos demais arquivos*/
}

Bem, me perdõem se está meio confuso, mas essa duvida surgiu, eu estou lendo sobre exceções java, mas ainda não ficou muito claro., desde já agradeço , abraços…

9 Respostas

luciano2

Não após a exceção aconteçer ela tem que ser tratada, se vc quer q a execução continue faça um tratamento abafando a exceção e armazenando-a para lançar no final do processameto.

Já fiz uma aplicação assim, tinha uma lista e cada elemento tinha q ser processado um por vez. Quando acontecia um erro a exceção era armazenada em um lista e depois do processamento subia uma lista com os erros q aconteçeram.

S

não abusando da sua boa vontade, é que eu estou começando com java, voce pode dar uma pequena ‘luz’, de como eu posso tratar isso, pode ser um exemplo genérico…mas já agradeço pela dica, abraços.

J

Poderia colocar o try/catch dentro do loop.

while(...){ try{ ... } catch(...){ } }

aajjbb

nunca experimentei, mas essa ideia do JFernando pode dar certo.

luciano2

Se colocar o try catch dentro do loop é possivel q fique em loop e nunca consiga acessar o recurso.

pmlm

Colocar o try/catch dentro do while é a solução para o problema

luciano2

Não é a solução para o problema, depende do tratamento que ele vai dar no catch, se voltar para o try com o mesmo parametro vai continuar o mesmo erro.

AndreSorge

Pessoal tenta isso..

boolean testa = true;

while(testa){

            try{
                   //......
                   testa = false;
            }catch(Exception e){
                  testa = true;
            }
}

Acredito que irá funcionar. Por que mesmo que ele caia na exception ele iá continuar o While, se eu estiver errado por favor me corrijam..

luciano2

Bem a verdade é q continua o mesmo problema, se for uma exception tipo nullpointer por exemplo ele sempre irá dar nullpointer e irá ficar em loop.

Usar esse tipo de tratamento só se o catch for corrigir a causa da exceção para que o try seja executado novamente.

Criado 14 de junho de 2010
Ultima resposta 18 de jun. de 2010
Respostas 9
Participantes 6