¿Deberían usarse los bloques catch para escribir la lógica, es decir, manejar el control de flujo, etc.? ¿O solo por lanzar excepciones? ¿Tiene efecto en la eficiencia o mantenibilidad del código?
¿Cuáles son los efectos secundarios (si los hay) de la lógica de escritura en el bloque catch?
EDITAR:
He visto una clase Java SDK en la que han escrito lógica dentro del bloque catch. Por ejemplo (fragmento tomado de la java.lang.Integer
clase):
try {
result = Integer.valueOf(nm.substring(index), radix);
result = negative ? new Integer(-result.intValue()) : result;
} catch (NumberFormatException e) {
String constant = negative ? new String("-" + nm.substring(index))
: nm.substring(index);
result = Integer.valueOf(constant, radix);
}
EDIT2 :
Estaba pasando por un tutorial donde lo cuentan como una ventaja de escribir la lógica de casos excepcionales dentro de las excepciones:
Las excepciones le permiten escribir el flujo principal de su código y tratar los casos excepcionales en otros lugares.
¿Alguna pauta específica sobre cuándo escribir lógica en el bloque catch y cuándo no?