Java - znajdź pierwszą przyczynę wyjątku
Muszę sprawdzić, czy wyjątek jest spowodowany problemem z bazą danych. Otrzymuję wyjątek i sprawdzam, czy jego przyczyna zawiera ciąg „ORA” i zwraca go (coś w rodzaju „ORA-00001”). Problem polega na tym, że otrzymany wyjątek jest zagnieżdżony w innych wyjątkach, więc jeśli nie dowiem się, czy jest to wyjątek oracle, muszę sprawdzić przyczynę tego wyjątku i tak dalej. Czy jest na to czystszy sposób? Czy istnieje sposób na poznanie pierwszej przyczyny (głęboko zagnieżdżonego wyjątku) danego wyjątku?
Mój obecny kod wygląda tak:
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;
}
}