Os blocos catch devem ser usados para escrever lógica, por exemplo, controlar o controle de fluxo etc. Ou apenas por lançar exceções? Isso afeta a eficiência ou a manutenção do código?
Quais são os efeitos colaterais (se houver) da escrita lógica no bloco catch?
EDITAR:
Eu vi uma classe Java SDK na qual eles escreveram lógica dentro do bloco catch. Por exemplo (trecho retirado da java.lang.Integer
classe):
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 :
Eu estava passando por um tutorial em que eles contam como uma vantagem de escrever a lógica de casos excepcionais dentro das exceções:
As exceções permitem que você escreva o fluxo principal do seu código e lide com casos excepcionais em outros lugares.
Alguma orientação específica quando escrever lógica no bloco catch e quando não?