Since we're on a major migration process of this website, some component documents here are out of sync right now. In the meantime you may want to look at the early version of the new website
https://camel.apache.org/staging/
We would very much like to receive any feedback on the new site, please join the discussion on the Camel user mailing list.

Why is the exception null when I use onException?

If you use onException to handle exceptions, such as shown below:

.onException(Exception.class).handled(true)
        .process(new Processor() {
          @Override
          public void process(Exchange exchange) throws Exception {
                Exception cause = exchange.getException());
                // why cause exception is null ???
          }
        })
.end()

Then make notice that because you use handled(true), then the caused exception is no longer available from exchange.getException(), because we told Camel that we will handle the exception.

Instead you can access the caused exception from a property on the exchange with the key Exchange.EXCEPTION_CAUGT, as shown below:

.onException(Exception.class).handled(true)
        .process(new Processor() {
          @Override
          public void process(Exchange exchange) throws Exception {
                Exception cause = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class);
                // we now have the caused exception
          }
        })
.end()
© 2004-2015 The Apache Software Foundation.
Apache Camel, Camel, Apache, the Apache feather logo, and the Apache Camel project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
Graphic Design By Hiram