Dúvida em Excepções

10 respostas
Claudia.pt

Boa tarde :slight_smile:
Estou com uma dúvida em excepções…
Tenho o seguinte bloco de código

try {
       //code
} catch (MalformedURLException e) {
			e.printStackTrace();
		  } catch (IOException e) {
			e.printStackTrace();
		  } catch (FactoryConfigurationError e) {
			e.printStackTrace();
	  	  } catch (ParserConfigurationException e) {
			e.printStackTrace();
		  } catch (SAXException e) {
			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

10 Respostas

Adriano_Almeida

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 :slight_smile:
Estou com uma dúvida em excepções…
Tenho o seguinte bloco de código

try {
       //code
} catch (MalformedURLException e) {
			e.printStackTrace();
		  } catch (IOException e) {
			e.printStackTrace();
		  } catch (FactoryConfigurationError e) {
			e.printStackTrace();
	  	  } catch (ParserConfigurationException e) {
			e.printStackTrace();
		  } catch (SAXException e) {
			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:

public class Teste {
    public static void main(String[] args) {
        try {
            int b = 2 / 0; //Exceção lançada propositalmente
            System.out.println("Valor de b = " + b);
        } catch (Exception ex) {
            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(Exception e) { //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.

Exemplo:

try {
        //code
 } catch (MalformedURLException e) {
     e.printStackTrace();
    return;
} catch (IOException e) {
    e.printStackTrace();
    return;
} catch (FactoryConfigurationError e) {
    e.printStackTrace();
    return;
} catch (ParserConfigurationException e) {
    e.printStackTrace();
    return;
} catch (SAXException e) {
    e.printStackTrace();
    return;
} 
 
 // Writes DB

É assim que eu faço qdo quero que o programa pare de executar qdo pegar algum tipo de erro.

até mais…

Claudia.pt

Valeu :slight_smile:

Criado 22 de janeiro de 2007
Ultima resposta 22 de jan. de 2007
Respostas 10
Participantes 6