Sto usando SonarQube per la qualità del codice. Ho ricevuto un problema relativo alla gestione delle eccezioni, che dice rimuovere la clausola throw dal blocco finally.Come evitare la clausola throw in finally block
} catch(Exception e) {
throw new MyException("request failed : ", e);
} finally {
try {
httpClient.close();
} catch (IOException e) {
throw new MyException("failed to close server conn: ", e);
}
}
Sulla base delle mie conoscenze sopra il codice sembra buono. Se rimuovo la clausola throw e sopprimo l'eccezione, finalmente il chiamante di questo metodo non sarà in grado di conoscere lo stato del server. Non sono sicuro di come possiamo ottenere la stessa funzionalità senza avere una clausola di lancio.
Forse si tenta di aggiungere un blocco 'finally' in quella interna blocco' try-catch' e vedere se avverte ancora? – Vikdor
Se si stanno già utilizzando clausole di lancio per indicare altri errori nella stessa funzione, forse sarebbe imprudente utilizzare un metodo diverso per questo caso particolare? – Troyseph
Oh, penso che tu sia preoccupato perché anche se la connessione non viene mai eseguita correttamente, il tuo blocco 'finally' getta ancora il tuo' MyException', vero? – Troyseph