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;
        }
    }

questionAnswers(9)

yourAnswerToTheQuestion