Java - encontre a primeira causa de uma exceção

Eu preciso verificar se uma exceção é causada por algum problema no banco de dados. Eu recebo uma exceção e verifico se sua causa contém a string "ORA" e retorno (algo como "ORA-00001"). O problema aqui é que a exceção que recebo é aninhada dentro de outras exceções, então se eu não descobrir se é uma exceção oracle, eu tenho que verificar a causa dessa exceção e assim por diante. Existe uma maneira mais limpa de fazer isso? Existe uma maneira de saber a primeira causa (a exceção aninhada em profundidade) de uma determinada exceção?

Meu código atual é assim:

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