Thanks willem: It seems that the onException has a little different difference to try-catch;
That's : try-catch could recover the exception and continue to execute next processor in pipeline But on-Exception always stop execute when exception occurs in pipeline I am not very sure about this(But according the camel 2.2's source code ,it does so, and I have tried a simple sample to prove this); if it does only works as such means, the onException cannot replace try-catch completely; Willem wrote: >How about using the onExeption[1] ? >It works within the ErrorHandler, and it can do the same thing as >doTry... doCatch does. [1]http://camel.apache.org/exception-clause.html Willem ext2 wrote: > Thanks Claus Ibsen: > > If we just consider this example, move policy before doTry could resolve it; but If we consider another situation: > <doTry> > ..some other operation .. > <policy ref="...> > transaction operations > </policy> > <docatch> > </docatch> > </dotry> > > At this time, I cannot move policy to <doTry/> easily; and also, if transaction operations raise exception, the doCatch cannot catch it; > > > Claus Ibsen wrote: >> Move the <policy> before the <doTry> > > >> On Thu, Apr 22, 2010 at 9:08 AM, ext2 <x...@tongtech.com> wrote: >> >> Hi: >> >> The camel's transaction required the transacted-error-handler, but try-catch >> required no-error-handler. They will conflict; following is a sample that >> the try-catch cannot works while using transaction. but I am not sure if >> this is bug or just a camel's limit? >> >> For example, the following route : >> >> <doTry> >> <policy ref="PROPAGATION_REQUIRED"> >> <pipeline> >> <to uri="ibatis:table.add?statementType=Insert"/> >> <bean ref="errorbean" method="raiseError"/> >> </pipeline> >> </policy> >> <doCatch> >> <exception>java.lang.Exception</exception> >> <bean ref="mybean" method="foo"/> >> </doCatch> >> >> As for normal understanding: the errorbean(just after ibatis) raise error, >> so the pipeline will marked as rollback status, but the exception is still >> exist, and the catch clause will be execute.And in camel, doCatch cannot be >> execute; >> >> >> > > >