Мне нужно проверить, вызвано ли какое-либо исключение какой-либо проблемой базы данных. Я получаю исключение и проверяю, содержит ли его причину строку "ORA" и возвращает ее (что-то вроде "ORA-00001" ). Проблема здесь в том, что исключение, которое я получаю, вложено внутри других исключений, поэтому, если я не выясню, является ли это исключением oracle, я должен проверить причину этого исключения и так далее. Есть ли более чистый способ сделать это? Есть ли способ узнать первую причину (глубокое вложенное исключение) данного исключения?
Мой текущий код выглядит следующим образом:
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;
}
}