Boa tarde
Estou com uma dúvida em excepções…
Tenho o seguinte bloco de código
try{//code}catch(MalformedURLExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}catch(FactoryConfigurationErrore){e.printStackTrace();}catch(ParserConfigurationExceptione){e.printStackTrace();}catch(SAXExceptione){e.printStackTrace();}// Writes DB
A minha dúvida é a seguinte, se for apanhada alguma excepção, o código posiccionada em Write DB é executado?
Não…ele não será executado… a não ser que ele esteja dentro de um bloco finally {} (que é executado acontecendo a exceção ou não).
cassio
Claudia.pt:
Boa tarde
Estou com uma dúvida em excepções…
Tenho o seguinte bloco de código
try{//code}catch(MalformedURLExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}catch(FactoryConfigurationErrore){e.printStackTrace();}catch(ParserConfigurationExceptione){e.printStackTrace();}catch(SAXExceptione){e.printStackTrace();}// Writes DB
A minha dúvida é a seguinte, se for apanhada alguma excepção, o código posiccionada em Write DB é executado?
Desde já,
Obrigada pelo esclarecimento
Cláudia
Se o “writes db” estiver FORA do escopo do seu bloco try, irá executar sim.
brunogamacatao
Rapaz, se a exceção for lançada dentro do bloco try e devidamente capturada por alguns dos blocos catch relacionados, qualquer código posterior será executado.
Uma forma legal de tirar esse tipo de dúvidas é a tentativa e erro, um código simples poderia servir para este propósito:
publicclassTeste{publicstaticvoidmain(String[]args){try{intb=2/0;//Exceção lançada propositalmenteSystem.out.println("Valor de b = "+b);}catch(Exceptionex){System.out.println("A exceção foi capturada");}System.out.println("Imprimiu isso aqui");}}
Ao executar esse código será exibido:
A exceção foi capturada
Imprimiu isso aqui
Claudia.pt
Exacto!
O que está acontecendo é que o bloco write DB está sendo executado!!
E o que eu queria era que, se fosse lançada alguma das excepções listadas, o bloco não fosse executado.
Como faço isso?
Cláudia
brunogamacatao
Coloca o código do Write DB dentro do bloco try.
Claudia.pt
Ok.
Assim funciona.
E é sempre assim o raciocinio??
Ou seja, o q kero sempre executado-> dentro de um finally, e o q falha qdo ocorre uma excepção-> dentro do try??
Cláudia
cassio
Claudia.pt:
Ok.
Assim funciona.
E é sempre assim o raciocinio??
Ou seja, o q kero sempre executado-> dentro de um finally, e o q falha qdo ocorre uma excepção-> dentro do try??
Cláudia
sim.
LuizLG
Try{//código que PODE gerar uma excessão}catch(Exceptione){//captura da excessão//código executado no tratamento da excessão}finally{// sempre é executado}
celsofurtado
Uma outra solução seria vc colocar a instrução ‘return’. Esta instrução pára a execução do código, seria um ‘exit sub’ do vb.