code: public final Throwable getException() {
          int s = status & DONE_MASK;
          return ((s >= NORMAL)    ? null :
                  (s == CANCELLED) ? new CancellationException() :
                  getThrowableException());
      }
docs: Returns the exception thrown by the base computation, or a
  {@code CancellationException} if cancelled, or {@code null} if
  none or if the method has not yet completed.
  
  @return the exception, or {@code null} if none