title: Handling exceptions when chaining Futures in guava
body: <p>Regarding handling exceptions in the following code:</p>
  
  <pre><code>ListenableFuture&lt;BufferedImage&gt; imgFuture = downloadExecutor
                      .submit(new Downloader(url));
              ListenableFuture&lt;BufferedImage&gt; resizeFuture = Futures.transformAsync(
                      imgFuture, new AsyncFunction&lt;BufferedImage, BufferedImage&gt;()
                      {
                          @Override
                          public ListenableFuture&lt;BufferedImage&gt; apply(
                                  BufferedImage input) throws Exception
                          {
                              ListenableFuture&lt;BufferedImage&gt; resizedFuture = null;
                              if (input != null)
                              {
                                  resizedFuture = actionExecutor
                                          .submit(new ResizeImageAction(input));
                              }
                              return resizedFuture;
                          }
                      });
  
              ListenableFuture&lt;BufferedImage&gt; grayFuture = Futures
                      .transformAsync(resizeFuture, input -&gt; {
                          return actionExecutor
                                  .submit(new ToGrayImageAction(input));
                      });
  </code></pre>
  
  <p>Assuming that every action sumbitted to an executor can raise an exception, how will this code behave.</p>
  
  <p>Does the <code>transformAsync()</code> method knows to not chain nulls or futures that raised exceptions?? Will using <code>CheckedFuture</code> help me here? If so, how should I use it?</p>