elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Java]Ayuda!! Sobre excepciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Java]Ayuda!! Sobre excepciones  (Leído 5,386 veces)
ALCales

Desconectado Desconectado

Mensajes: 9


Ver Perfil
[Java]Ayuda!! Sobre excepciones
« en: 20 Mayo 2012, 17:03 pm »

Hola buenas!, haber si me podeis ayudar con un problema que tengo.
Tengo que usar unos metodos (5) y comprobarlos usando excepciones, y 2 van a hacer que salte esa excepcion, lo que yo quiero es que cuando salte la excepcion me avise de que ese metodo tiene la excepcion pero que continue con los demas metodos que estan bien, no que se pare el programa entero.
Aqui dejo el codigo:

Código:
try{
            cen.incrementarEdad("Alex"); //aumentamos la edad de Alex, tipo Persona, y funciona 
            cen.incrementarEdad("Mario"); //este tiene la edad 0 asique salta la excepcion
            censo2.incrementarEdad("Hasma"); //y estos 3 restantes ya no los comprueba, y es lo que quiero cambiar
            censo2.incrementarEdad("Perico");
            cen.incrementarEdad("HarryPotter");
        }catch(OperacionImposibleException e){
            System.out.println("La edad de esta persona no es valida");
        }



[Esta era otra pregunta, ya Solucionada! la dejo por si le sirve de ayuda a alguien]

En un ejercicio de java, tengo que hacer un ArrayList de personas, (estas pueden ser empleados y alumnos tb) y tengo que almacenarlas en una ArrayList (eso controlado xD)
Pero despues tegno que hacer un metodo para detectar a los empleados y pasarlos a otro ArrayList distinto

ese metodo creo que lo tengo bien, es el siguiente:
Código:
public void filtroCenso(Censo cs1, Censo cs2){
            for(int i=0;i<=cs1.tamañoListado();i++){
                if(cs1.obtenElemento(i) instanceof Empleados){
                    cs2.añadirElemento(cs1.obtenElemento(i));
                    cs1.quitarElemento(i);                    
                }
            }
        }

El caso es que creo los objetos (empleados, personas, alumnos) y cuando uso el metodo me da error y no se por que es, me pone esto:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2

Espero vuestra ayuda, saaludos! y muchas gracias


« Última modificación: 20 Mayo 2012, 20:20 pm por ALCales » En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: [Java]Ayuda!! Error al almacenar objeto en un ArrayList
« Respuesta #1 en: 20 Mayo 2012, 18:16 pm »

Debes quitar el igual del for. Supongamos que tienes un Array con 5 elementos, el tamaño del array es 5 sin embargo y como debes saber, los índices comienzan a contar desde 0, así que el máximo de indices en este caso sería 4. Estas haciendo una comparación "menor igual", por lo que los indices igualaran el tamaño del Array pero sobrepasaran el máximo de los índices en uno, dando como resultado el IndexOutOfBoundsException con igual Size e Index.

Código
  1. public void filtroCenso(Censo cs1, Censo cs2){
  2.            for(int i = 0; i < cs1.tamañoListado(); i++){
  3.                if(cs1.obtenElemento(i) instanceof Empleados){
  4.                    cs2.añadirElemento(cs1.obtenElemento(i));
  5.                    cs1.quitarElemento(i);                    
  6.                }
  7.            }
  8.        }

Espero sea de ayuda.

Saludos.


« Última modificación: 20 Mayo 2012, 18:57 pm por RyogiShiki » En línea

ALCales

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: [Java]Ayuda!! Error al almacenar objeto en un ArrayList
« Respuesta #2 en: 20 Mayo 2012, 20:15 pm »

Muchas gracias, era eso, luego tb vi que tenia que decrementar la i
i--; por que cuando borraba del listado cs1. el elemento de delante ocupaba su posicion y si continuaba con el bucle, el elemento que se me habia quedado en la posicion que acababa de comprobar ya no lo comprobaba xD

Ahora tengo una nueva duda, sobre excepciones, editare el post en lugar de hacer otro, haber si me puedes ayudar otra vez, muchas gracias!
saludosss
En línea

[Case]


Desconectado Desconectado

Mensajes: 474



Ver Perfil WWW
Re: [Java]Ayuda!! Sobre excepciones
« Respuesta #3 en: 20 Mayo 2012, 21:12 pm »

Pues simplemente en lugar de cachar todas las excepciones en un solo try, separalas por varios trys.
En línea

ALCales

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: [Java]Ayuda!! Sobre excepciones
« Respuesta #4 en: 20 Mayo 2012, 21:22 pm »

Eso es justo lo que queria saber, esque queria saber si esa era la unica forma o habria alguna manera de hacerlo de golpe.

Esque ahora tambien tengo otro metodo que es, que suma a todas las Personas la edad, para que quede mas claro:

Código:
try{
            obj.sumarEdadAtodos(cen); //cen, es el ArrayList
        }catch(OperacionImposibleException e){
            System.out.println("La edad de esta persona no es valida");           
        }
Pues ese metodo de sumarEdadAtodos() dentro usa el de incrementarEdad()
entonces cuando salta una excepcion de alguna persona de arraylist, para de sumar, y termina, entonces queria saber si en ese podia parar y volver a seguir, osea esquivar el de la edad cero pero seguir con los demas
Bueno, muchas gracias
En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: [Java]Ayuda!! Sobre excepciones
« Respuesta #5 en: 20 Mayo 2012, 21:33 pm »

Para saber dodne se produjo la excepción puedes usar los métodos printStackTrace() y getStackTrace():

Código
  1. try {
  2.    String a  = "a";
  3.    int b = Integer.parseInt( a );
  4. } catch ( Exception ex ) {
  5.    System.out.println("Excepción llamando a: " + ex.getStackTrace()[1]);
  6.    System.out.println("Stack Trace completo: ");
  7.    ex.printStackTrace();
  8. }
  9.  

getStackTrace retornará un array con el stackTrace de la excepción y generalmente en el segundo elemento dará el método que arrojó la Excepción.

Espero se de ayuda.

Saludos.
« Última modificación: 20 Mayo 2012, 21:39 pm por RyogiShiki » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Documentacion sobre excepciones
Ingeniería Inversa
SeSoX 0 1,879 Último mensaje 19 Diciembre 2006, 14:21 pm
por SeSoX
Dudas sobre excepciones en Olly.
Ingeniería Inversa
N0mada 6 3,926 Último mensaje 11 Septiembre 2010, 16:30 pm
por N0mada
Ayuda Sobre Proyecto Java
Java
vinceet 1 1,585 Último mensaje 1 Febrero 2016, 21:13 pm
por .:UND3R:.
AYUDA excepciones de Junit
Java
adrifs95 1 1,678 Último mensaje 2 Marzo 2016, 08:33 am
por 4dr14n31t0r
Ayuda Trabajo sobre Java
Ingeniería Inversa
guass19 2 3,049 Último mensaje 1 Octubre 2017, 05:56 am
por apuromafo CLS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines