Dúvida bloco try catch

2 respostas
R

Alguém poderia me explicar esse código. Não entendi porque ao chamar a op2 o bloco finally é executado.

public class CA { int val=0; public void op1(int x) { val+=x; } public void op2(int x,int y) { val-=x+y; } int getVal() { return val; } } public class CB extends CA{ public void op1(int x) { val-=x; } public void op2(int x,int y) { try { val+=x/y; } catch(Exception e) { val=10; } finally { val++; } } } public class Main { public static void main(String[] args) { CA obj=new CB(); obj.op1(10); obj.op2(5,8); System.out.printf(?%d\n?,obj.getVal()); } }

2 Respostas

williamdasflores

Porque sempre que existir um finally em um bloco try/catch ele será executado, mesmo havendo erro ou não.
http://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html

R

Hum, só que a instrução val+=x/y; deveria ser executada ou não, porque quando executo o código percebo que ao passar por essa instrução o valor de val não muda.

Criado 10 de maio de 2012
Ultima resposta 11 de mai. de 2012
Respostas 2
Participantes 2