Hi

You can store the custom exception as an exchange property before the
persist, and then retrieve it afterwards when you do the persist.


On Fri, Feb 8, 2019 at 9:59 AM Dennis Holunder <dennish...@gmail.com> wrote:
>
> 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



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to