Joshua Bloch en su Effective Java escribe:¿Cómo documenta las excepciones sin marcar?
"utilice la etiqueta el Javadoc @throws para documentar cada una excepción no comprobada de que un método puede lanzar, pero no utilice los tiros de palabras clave para incluir sin marcar excepciones en la declaración del método . "
Bueno, eso suena razonable, pero ¿cómo saber qué excepción desaprovechada puede arrojar mi método?
Vamos a pensar en una clase siguiente:
public class FooClass {
private MyClass[] myClass;
/**
* Creates new FooClass
*/
public FooClass() {
// code omitted
// do something with myClass
}
/**
* Performs foo operation.<br />
* Whatever is calculated.
* @param index Index of a desired element
* @throws HorribleException When something horrible happens during computation
*/
public void foo(int index) {
try {
myClass[index].doComputation();
} catch (MyComputationException e) {
System.out.println("Something horrible happened during computation");
throw new HorribleException(e);
}
}
}
Ahora, he documentado HorribleException, pero es bastante obvio, que el método foo también puede lanzar sin control java.lang.ArrayIndexOutOfBoundsException. Cuanto más complejo es el código, es más difícil pensar en todas las excepciones sin marcar que el método puede arrojar. Mi IDE no me ayuda mucho allí y tampoco ninguna herramienta. Como no conozco ninguna herramienta para esto ...
¿Cómo manejas este tipo de situación?
Creo que lo que significa el pasaje es que documenta toda la excepción sin marcar su código arroja de manera explícita el método que está documentando y si llama a cualquier otro método suyo que arroje una excepción no verificada. –
En lugar de hacer 'lanzar nueva HorribleException (" index = "+ index, e)'. Cuanta más información tenga en su pila, mejor. –
Eso es solo un ejemplo tonto. Creo que el verdadero punto fue otro: considera la documentación de HorribleException, pero no ArrayIndexOutOfBoundsException. Considere varias excepciones, no solo el método ficticio foo. – Xorty