| [[WhyistheexceptionnullwhenIuseonException-WhyistheexceptionnullwhenIuseonException]] |
| = Why is the exception null when I use onException? |
| |
| If you use `onException` to handle exceptions, such as shown below: |
| |
| [source,java] |
| ---- |
| .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_CAUGHT`, as shown below: |
| |
| [source,java] |
| ---- |
| .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() |
| ---- |