Ouvi dizer que o aninhamento de instruções try-catch geralmente pode ser um cheiro de código, por isso estou me perguntando se essa situação é uma exceção. Caso contrário, quais seriam algumas boas maneiras de refatorar?
Meu código é semelhante ao seguinte:
try{
X x = blah;
otherStuff;
for (int i = 0; i < N; i++){
try{
String y = Integer.toString(i);
f(x);
}
catch(Exceptions1 e1){
System.err.println(... + y + ...);
System.exit(0);
}
}
catch(Exceptions2 e2){
...
}
Estou usando Exceptions
aqui para indicar uma captura múltipla.
e2
é usado para capturar exceções lançadas ao inicializar x
e executar otherStuff
. Idealmente, meu try-catch envolveria apenas essas duas linhas, mas eu uso x
dentro do meu loop e queria evitar os avisos de "atribuição não utilizada" causados pela inicialização de null fora do try-catch.
e1
não foi capturado várias vezes e2
porque eu quero fornecer ao usuário informações sobre detalhes da iteração e, portanto, queria um bloco catch dentro do loop.