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