Foros del Web » Programación para mayores de 30 ;) » Java »

Duda con un catch que esta dentro de un bucle

Estas en el tema de Duda con un catch que esta dentro de un bucle en el foro de Java en Foros del Web. Hola a todos, a ver si me podeis echar una mano en este "problemita" que me ha surgido. Se trata de un posible tratamiento del ...
  #1 (permalink)  
Antiguo 31/05/2007, 03:44
 
Fecha de Ingreso: mayo-2007
Mensajes: 222
Antigüedad: 17 años
Puntos: 0
Pregunta Duda con un catch que esta dentro de un bucle

Hola a todos, a ver si me podeis echar una mano en este "problemita" que me ha surgido.

Se trata de un posible tratamiento del catch, dentro de un bucle anidado.

el codigo seria el siguiente:



for (int i=0;i<this.t.length;i++)
{
for (int j=0;j<this.t[i].length;j++)
{
try
{
if(this.Encontrado(i,j))
cont++;
} catch (Excepcion ex)
{
}

}
}
return cont;

Mi pregunta es la siguiente:si para un (i,j) del bucle anidado, saltara la excepcion, una vez tratado dentro del catch, ¿seguiria iterando para el resto de (i,j) o por el contrario al haber entrado en el catch, depues de tratamiento se saldria de los bucles?

Un saludo.
  #2 (permalink)  
Antiguo 31/05/2007, 03:54
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: Duda con un catch que esta dentro de un bucle

Wenas

Si ocurre una excepcion, salta al catch y si no existe un finally termina la ejecucion del metodo.

El efecto es el mismo que meter los for dento del bucle try-catch, que por otra parte es como deberia estar.


Un saludo.
  #3 (permalink)  
Antiguo 31/05/2007, 04:03
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Duda con un catch que esta dentro de un bucle

Cita:
Iniciado por elAntonie Ver Mensaje
Si ocurre una excepcion, salta al catch y si no existe un finally termina la ejecucion del metodo.

El efecto es el mismo que meter los for dento del bucle try-catch, que por otra parte es como deberia estar.
Lamento contradecirte, pero no es cierto. Despues de pasar por el catch, el hilo de ejecución continúa donde acaba el bloque catch, así que no sale del bucle. Y los finally no tienen nada que ver con que se termine o no el metodo que contiene el bloque try/catch.

S!
  #4 (permalink)  
Antiguo 31/05/2007, 05:19
 
Fecha de Ingreso: mayo-2007
Mensajes: 222
Antigüedad: 17 años
Puntos: 0
Re: Duda con un catch que esta dentro de un bucle

Hecho.Gracias por responder.

Otra cosa:

si por ejemplo tienes 2 try tal que asi:

try
{
.....
}
catch (Exception e)
{
}
try
{
...
}
catch(Exception e)
{
}

Si en el primer try salta la excepcion y lo tratas en el 1 er catch, ¿despues de haberse tratado la excepcion), sigue el segundo try o por el contrario se lo salta, finalizando asi el programa?, Yo creo que sigue la ejecucion del segundo try, ..... pero no estoy seguro.

A ver si me sacais de la duda.

Un saludo.

Última edición por bladu; 31/05/2007 a las 05:31
  #5 (permalink)  
Antiguo 31/05/2007, 05:59
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: Duda con un catch que esta dentro de un bucle

Cita:
Iniciado por GreenEyed Ver Mensaje
Lamento contradecirte, pero no es cierto. Despues de pasar por el catch, el hilo de ejecución continúa donde acaba el bloque catch, así que no sale del bucle. Y los finally no tienen nada que ver con que se termine o no el metodo que contiene el bloque try/catch.

S!
Pues no lo lamentes.

He dicho una gilipollez como un piano.

Ya estas tratando la excepcion asi que no se sale del bucle. Para tu segunda pregunta, bladu, decirte que estas en lo cierto. Continua por el segundo try

Gracias por la correcion, greeneyed.

Saludos a los dos.
  #6 (permalink)  
Antiguo 31/05/2007, 08:04
 
Fecha de Ingreso: mayo-2007
Mensajes: 222
Antigüedad: 17 años
Puntos: 0
Re: Duda con un catch que esta dentro de un bucle

Cita:
Iniciado por elAntonie Ver Mensaje
Pues no lo lamentes.

He dicho una gilipollez como un piano.

Ya estas tratando la excepcion asi que no se sale del bucle. Para tu segunda pregunta, bladu, decirte que estas en lo cierto. Continua por el segundo try

Gracias por la correcion, greeneyed.

Saludos a los dos.
Muchas gracias.
  #7 (permalink)  
Antiguo 31/05/2007, 09:17
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Duda con un catch que esta dentro de un bucle

Como dice elAntonie, te continuará despues de acabar el catch, así que sigue con el segundo try.

Los bloques try/catch has de pensarlos como como un bloque de codigo más, con la salvedad de que, desde el bloque try, no saldras de forma descontrolada por excepciones que esten capturadas en el bloque catch. Pero a partir de ahí se acaba como un bloque cualquiera y sigue la ejecución normal.

S!

*Remarco lo del bloque try por que desde el bloque catch pueden saltar excepciones y es como si se lanzaran fuera del try.

S!
  #8 (permalink)  
Antiguo 06/06/2007, 15:32
 
Fecha de Ingreso: mayo-2007
Mensajes: 222
Antigüedad: 17 años
Puntos: 0
Re: Duda con un catch que esta dentro de un bucle

Hola otra vez!
Tengo otra duda sobre el tema de las excepciones.


Supongamos que tengo un codigo que hace lo siguiente:

.....

While (i<5)
{
.........
else
{
throw new ExcepcionNueva();
.........
i++;
}

Si lanzo el throw, el cual se trata en un metodo que llamara a este codigo. Despues de haberse lanzado y haberse tratado en el metodo correspondiente, que hace: ¿se interrumpe la ejecucion al estar el hilo de ejecucion en el metodo del tratamiento y por consiguiente no vuelve al bucle del while a acabar las vueltas que faltan por iterar? o por el contrario ¿ el hilo de ejecucion vuelve despues de haberse tratado en el catch a iterar las vueltas que faltan para acabar el bucle?

Un saludo.
  #9 (permalink)  
Antiguo 06/06/2007, 16:04
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Re: Duda con un catch que esta dentro de un bucle

Cuando lanzas la excepcion ahi termina la ejecucion.
Ej:
Código HTML:
    int x=5; 
    while(x>4){
		x=3;
		if(x==3){
			System.out.println("entro antes del throw");
			throw new Exception();
		}
		System.out.println("no entra despues de lanzar la excepcion");
		
	}
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:06.