Java - manejo de excepciones

 
Vista:

manejo de excepciones

Publicado por Laura (3 intervenciones) el 02/02/2005 02:00:57
quisiera saber si esta bien utilizado el concepto de excepcion en el metodo recuperar de una lista.(es corresto que el metodo arroje una excepcion???)
public Object recuperar(int pos) throws IndexOutOfBoundsException{
if(!isEmpty() && pos>=0 && pos<longi){
Nodo aux=fic.getNext();
for(int i=0;i<pos;i++){
aux=aux.getNext();
}
return aux.getInfo();
}
else{
IndexOutOfBoundsException e=new
IndexOutOfBoundsException();
throw e;
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:manejo de excepciones

Publicado por chuidiang (532 intervenciones) el 02/02/2005 08:42:54
Hola:

El concepto es correcto y la excepción está bien lanzada.
Quizás para hacerlo más mejor deberías usar el constructor de excepción que lleva un String, indicando el valor de pos que te han pasado y el valor máximo que admites.

Se buena.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:manejo de excepciones

Publicado por Claudio (31 intervenciones) el 02/02/2005 22:27:51
Muy buena esa acotación!!!!!

Pensa en las exceptions como la forma en que tu sistema te avisa que pasó algo malo, fuera de lo normal o excepcional, esa sería en primer lugar la clave para saber si algo se debe solucionar lanzando una exception o no.

Teniendo esto en cuenta, entonces si se puede llegar a pensar que sería algo fuera de lo común (o muy poco esperado), que te pidan algo que no tengas dentro de tu lista, por lo que estaría bien que se lance una exception.
Otra cosa que se desprende del primer párrafo, es que si ocurrió algo fuera de lo normal dentro de mi sistema, yo querría solucionarlo lo más rápidamente posible, por lo que no querría estar debugeando línea por línea de mi código para saber donde ocurrió el error y por que. De modo que cuando se produce el error, me ayudaría muchísimo que la exception me tire un mensaje diciendome lo que sucedió de modo de que el que lea el mensaje tenga la suficiente información como para saber que fue lo que pasó en el punto en que se rompió todo, a eso viene el consejo chuidiang.
Yo agregaría además que si estás haciendo un sistema grande, busques la forma de hacer que ese proceso (que se va a repetir por todos lados) sea lo más fácil y natural posible, que yo tenga que escribir algo así:
throw new MiException("fallo la lecturas de bla, porque " + nombreVar1 + " no estaba en un valor entre " + nombreVar2 + " y " + nombreVar3)

me parece que es mucho más desprolijo que hacer algo así:

throw new MiExceptionBuilder("Falló la lectura de bla por estar fuera de rango").addInfo("valor actual", nombreVar1).addInfo("mínimo permitido", nombreVar2).addInfo("maximo permitido", nombreVar3).build();

Este builder ya se encarga que cuando yo quiero ver el mensaje de la exception se vea algo así:

Falló la lectura de bla por estar fuera de rango:
valor actual: 98789751
minimo permitido: 4
máximo permitido: 255

En el sistema en el que estoy trabajando básicamente lo estamos haciendo de esta forma y te comento que nos está resultando muy pero muy provechoso.

Otra cosa, fijate de buscar como formas de manejo de errores los conceptos de BusinessException y ProgramException, y que tanto te puede llegar a aportar y mejorar (o no), el uso solo de exceptions que sean runtime.

Te dejo picando algo para que pienses en cuanto al concepto de que es una exception:
En un sistema es muy común que yo me tenga que logear antes de poder utilizarlo ingresando mi nombre de usuario y contraseña, pero también es muy común que alguien quiera entrar sin tener un usuario en el sistema probando datos al azar, así como también es muy común que yo teniendo un usuario y contraseñas válidos en el sistema, los escriba mal cuando me quiero logear. ¿Eso se controla utilizando exceptions o es más conveniente que utilice algúna otra técnica como un valor de retorno del método que valida?. Pensá que sobre todo el último caso que te nombre, no es algo que no se espere que pase en el sistema.

Saludos, y espero que sirva ;-)
Claudio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar