That is by design to not handle errors while handling errors, eg you
can easily get in endless looping. When that happens Camel detect it
and does a fatal fallback error handling where the 2nd error is
logged.


On Wed, Dec 16, 2015 at 6:08 PM, bocamel <johnz...@gmail.com> wrote:
> I have the following context level OnException.  After it catches an error,
> it would send out an email alert using a direct-vm route.  But to avoid
> infinite loop, the email alert is only sent if the OnException is not
> entered due to a nested exception.
>
> When the direct-vm consumer is not started and there is an exception (e.g.
> ValidationException), the OnException is entered and then fail with
> org.apache.camel.component.directvm.DirectVmConsumerNotAvailableException
> which is expected.  I had expected that the
> DirectVmConsumerNotAvailableException is caught by the OnException again.
> But it was not. I need to catch it so that the original ValidationException
> can be "handled".  Any suggestion?
>
> <c:onException>
>         <c:exception>org.apache.camel.InvalidPayloadException</c:exception>
>         <c:exception>org.apache.camel.ValidationException</c:exception>
>         <c:exception>org.apache.camel.CamelException</c:exception>
>         <c:exception>org.apache.camel.CamelExchangeException</c:exception>
>
> <c:exception>org.apache.camel.component.directvm.DirectVmConsumerNotAvailableException</c:exception>
>         <c:exception>java.lang.Exception</c:exception>
>         <c:exception>java.lang.RuntimeException</c:exception>
>         <c:handled><c:constant>true</c:constant></c:handled>
>         <c:choice>
>                 <c:when><c:groovy>exchange.properties.eb_already_in_recovery 
> !=
> 'true'</c:groovy>
>                     <c:setProperty propertyName="eb_already_in_recovery">
> <c:constant>true</c:constant></c:setProperty>
>                     <c:setExchangePattern pattern="InOnly" />
>                     <c:to uri="direct-vm:sendEmailAlert" />
>                 </c:when>
>                 <c:otherwise>
>                         <c:log message="***** Failed again in error recovery:
> ${property.CamelExceptionCaught}."/>
>                 </c:otherwise>
>         </c:choice>
> </c:onException>
>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/DirectVmConsumerNotAvailableException-cannot-be-caught-by-onException-tp5775185.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



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

Reply via email to