Ich muss prüfen, ob eine Ausnahme durch ein Datenbankproblem verursacht wird. Ich empfange eine Exception und prüfe, ob ihre Ursache die Zeichenfolge "ORA" enthält und gebe diese zurück (etwa "ORA-00001"). Das Problem dabei ist, dass die Ausnahme, die ich erhalte, in anderen Ausnahmen verschachtelt ist. Wenn ich also nicht herausfinde, ob es sich um eine Oracle-Ausnahme handelt, muss ich die Ursache dieser Ausnahme überprüfen und so weiter. Gibt es eine sauberere Methode, dies zu tun? Gibt es eine Möglichkeit, die erste Ursache (die tief verschachtelte Ausnahme) einer bestimmten Ausnahme zu ermitteln?
Mein aktueller Code sieht wie folgt aus:
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;
}
}