Hi Claus,

I was able to redesign the route, so that works as I want. In that
context however there is another issue with retrieving the exception
from exchange CamelExceptionCaught property.

The route catches CustomException exception and in that case saves the
body to database. While saving to database the PersistenceException
occurs, but is successfully retried. Then the CamelExceptionCaught
property contains PersistenceException instead of CustomException.

from("direct:start")
   .onException(CustomException.class)
    .handled(true)
    .to(persist)  // persist body (will fail, but successfully retry)
    .to(report)   // report custom exception

from(persist)
  .onException(PersistenceException.class)
    .retry(10)
    .log("could not persist body")

Is there a way to retrieve the original exception without looking
exception.getSuppressed() ? Obviously, the retried exception is not
interesting, but the failed one.

Thanks!
Dan

Am Mo., 3. Dez. 2018 um 19:05 Uhr schrieb Claus Ibsen-2 [via Camel]
<ml+s465427n5826402...@n5.nabble.com>:
>
> Hi
>
> This is by design, to avoid circular onException to trigger in endless.
> So try to design your error handling in a more safe manner
> On Tue, Nov 13, 2018 at 10:23 AM Dennis Holunder <[hidden email]> wrote:
>
> >
> > Hello,
> >
> > I have two onException definitions which catch exceptions and send
> > them to direct:logerrors endpoint. The second exception might throw an
> > exception which should be caught and handled by the first one. But
> > this doesn't work. The FatalFallbackErrorHandler kicks in and as the
> > result the exception is not logged by direct:logerrors, as I wish. Any
> > ideas how to safely implement this?
> >
> >         from(direct:start)
> >             .onException(UpdateException.class) //retries and logs the error
> >                 .handled(true)
> >                 .maximumRedeliveries(5)
> >                 .redeliveryDelay(1_000L)
> >                 .to(direct:logerrors)
> >             .end()
> >             .onException(IgnoredException.class) //saves the POJO and
> > logs the error
> >                 .handled(true)
> >                 .process().body(Pojo.class, processor::update) //
> > throws UpdateException
> >                 .to(direct:logerrors)
> >             .end()
> >
> > Regards,
> > Dan
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2
>
>
> ________________________________
> If you reply to this email, your message will be added to the discussion 
> below:
> http://camel.465427.n5.nabble.com/dealing-with-exceptions-in-onExceptions-definitions-tp5825721p5826402.html
> To unsubscribe from Camel, click here.
> NAML

Reply via email to