title: Java - find the first cause of an exception
body: <p>I need to check if an exception is caused by some database problem. I receive an Exception and check if its cause contains the "ORA" string and return that (something like "ORA-00001"). The problem here is that the exception I receive is nested inside other exceptions, so if I don't find out if it's an oracle exception, I have to check into the cause of that exception and so on.
  Is there a cleaner way to do this? Is there a way to know the first cause (the deep-nested exception) of a given exception?</p>
  
  <p>My current code looks like this:</p>
  
  <pre><code>private String getErrorOracle(Throwable e){
          final String ORACLE = "ORA";
          if (e.getCause() != null &amp;&amp; e.getCause().toString().contains(ORACLE)){
              return e.getCause().toString();
          } else if(e.getCause() != null){
              return getErrorOracle(e.getCause());
          } else {
              return null;
          }
      }
  </code></pre>