Try catch

11 respostas
C

Olá pessoal,

usando um bloco try catch finally em um método, lançando ou não uma excecao o resto do metodo é executado ?

try{ //nao lança excecao e executa com sucesso } catch(Exception e) { // nao executa } finally{ //executa com sucesso } System.out.println("O resto do método executa");
O código acima está ok.

try{ //lanca exececao e nao executa com sucesso } catch(Exception e) { // executa } finally{ //executa com sucesso } System.out.println("O RESTO DO MÉTODO EXECUTARÁ ????");

Nesse segundo caso existe alguma situação que ele nao executará. Fiz uns exercício os quais nao tenho mais, e achava que não executava … mas estava certo disso e errei uma questão em um simulado, e fui testar o codígo e realmente lançando ou não excessão o resto do metodo prosseguia e executava com sucesso, confirmam ?

Obrigado

11 Respostas

renzonuccitelli

Sim, executa normalmente. Quando é lançada a excecao no bloco try, ele nao executa da linha que lancou acessou até o final do bloco try. Ai ele cai nos blocos catch e depois executa o finally. Para o código escrito fora do bloco nao importa se foi lançada ou nao…

francislon

Essa é a vantagem de se usar tratamento de exceção…seu programa não é abortado se for capturada alguma exceção…

ViniGodoy

No caso de exceção, sim, sempre executará.

Mas vale lembrar que, caso haja um return dentro do try, o bloco ressaltado não executará, embora o que está dentro do finally execute.

try{
    //não dá exceção
    return;
}
catch(Exception e)
{
   // não executa
}
finally{
   //executa com sucesso
}
//Não executa
System.out.println("Não executa");
Jeferson_Manetti

so complementando…

caso ocorra um System.exit(0) o finally não sera executado…

try{ //acaba com a alegria da galera... System.exit(0); } catch(Exception e) { // não executa } finally{ //não executa } //Não executa System.out.println("Não executa");

peczenyj

O melhor que vc pode fazer é ir testando.

Faça todo o tipo de coisa maluca e coloque uns “passei pelo finally”, “passei pelo catch” no caminho. :slight_smile:

rodrigo.ferreira

E aí cara, beleza ?

Uma dica:  Estude bastante este tópico, por que isto realmente cai na prova ;-)

Abraço.

C

Muito Obrigado, valeu pela ajuda.

C

Olá pessoal,

(#68)if an exception is not caught, the finally block will run and the rest of the method is skipped.

Answer: true
The finnaly block will always run if an exception is thrown, an then the exception is immediately passed to the calling method.

Isto está errado? certo ?

renzonuccitelli

Com “restante do método” acho que a fonte quis dizer restante do código no bloco try…

C

renzonuccitelli,

Aí está minha dúvida entendi que o enunciado estava se referindo ao resto do método e não do bloco try.

R

renzonuccitelli,

Aí está minha dúvida entendi que o enunciado estava se referindo ao resto do método e não do bloco try.

No exame não há perguntas de sentido dúbio.

Criado 23 de novembro de 2008
Ultima resposta 26 de nov. de 2008
Respostas 11
Participantes 8