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 the caused
exception is no longer available from exchange.getException()
, because
the message is in the onException block.
Instead you can access the caused exception from a property on the
exchange with the key Exchange.EXCEPTION_CAUGHT
, 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()