Java - encuentra la primera causa de una excepción

Necesito verificar si una excepción es causada por algún problema en la base de datos. Recibo una excepción y compruebo si su causa contiene la cadena "ORA" y la devuelvo (algo así como "ORA-00001"). El problema aquí es que la excepción que recibo está anidada dentro de otras excepciones, por lo que si no averiguo si es una excepción de Oracle, tengo que investigar la causa de esa excepción y así sucesivamente. ¿Hay una forma más limpia de hacer esto? ¿Hay alguna forma de saber la primera causa (la excepción profundamente anidada) de una excepción dada?

Mi código actual se ve así:

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

Respuestas a la pregunta(9)

Su respuesta a la pregunta