Ho bisogno di controllare se un'eccezione è causata da qualche problema di database. Ricevo un'eccezione e controllo se la causa contiene la stringa "ORA" e la restituisco (qualcosa come "ORA-00001"). Il problema qui è che l'eccezione che ricevo è annidata all'interno di altre eccezioni, quindi se non scopro se si tratta di un'eccezione di Oracle, devo verificare la causa di tale eccezione e così via. C'è un modo più pulito per fare questo? C'è un modo per conoscere la prima causa (l'eccezione nidificata profonda) di una determinata eccezione?Java - trova la prima causa di un'eccezione
mio codice attuale è simile al seguente:
private String getErrorOracle(Throwable e){
final String ORACLE = "ORA";
if (e.getCause() != null && e.getCause().toString().contains(ORACLE)){
return e.getCause().toString();
} else if(e.getCause() != null){
return getErrorOracle(e.getCause());
} else {
return null;
}
}
Grazie. Penso che andrò da questa parte allora. Devo farlo perché il cliente desidera mostrare alcuni messaggi specifici quando l'eccezione è causata da qualsiasi problema relativo al database. Quando ricevo l'eccezione non so se è stata causata dal database poiché la prima eccezione è annidata all'interno della catena delle eccezioni, quindi stavo cercando un modo per risolverlo. – Averroes
ehm, il suo metodo è ricorsivo, quindi otterrà la causa alla radice. – Bozho
@Bozho - Ha tre dichiarazioni if con resi. Se lo avesse chiamato di nuovo, sarebbe ricorsivo, ma avrebbe bisogno di cambiare la sua logica, quindi uscirà. –