You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by ext2 <xu...@tongtech.com> on 2010/03/26 07:14:20 UTC

try-catch conflict with default-error-handler

Follow route use a default-error-handler for the route, and also defined  a
custom exception handle logic using try-catch-pattern. 

But if the "myProcessRaiseError" raised exception the catch-clause cannot be
invoked; Why? Is it camel's bug?


<route>
      <from uri="ws:... "/>
	 <bean ...>
	<doTry>
     	 <filter>
      		<simple>${body} == 'firstChoice'</simple>
		      <bean ref="myProcess" />
		      <bean ref="myProcessRaiseError"/>
	      </filter>
		<doCatch>
			..some error handler...
		</doCatch>
	</doTry>
     <process ...>
</route>





Re: try-catch conflict with default-error-handler

Posted by Claus Ibsen <cl...@gmail.com>.
On Fri, Mar 26, 2010 at 7:30 AM, ext2 <xu...@tongtech.com> wrote:
> Sorry, I forget to say, this is running on camel 2.2;
>
> I have checked the camel's document and source-code; the camel-document say
> " try-catch will disable the error-handler"; but while I checking the
> source-code of camel , it only disable  error-handlers of node (which is
> conjunction with doTry pattern).
>
>  In the following example, only <filter> processor is conjunction with
> <doTry>. So only filter processor's  error-handler is disabled. But
> error-handlers of  other processor which defined inside filter is not
> disabled.
>
> So the catch-clause is not invoked. Is it a bug?
>

I have created a ticket to look into it
https://issues.apache.org/activemq/browse/CAMEL-2577


> ---------------------------------------------------------------------------
> Follow route use a default-error-handler for the route, and also defined  a
> custom exception handle logic using try-catch-pattern.
>
> But if the "myProcessRaiseError" raised exception the catch-clause cannot be
> invoked; Why? Is it camel's bug?
>
>
> <route>
>      <from uri="ws:... "/>
>         <bean ...>
>        <doTry>
>         <filter>
>                <simple>${body} == 'firstChoice'</simple>
>                      <bean ref="myProcess" />
>                      <bean ref="myProcessRaiseError"/>
>              </filter>
>                <doCatch>
>                        ..some error handler...
>                </doCatch>
>        </doTry>
>     <process ...>
> </route>
>
>
>
>
>
>
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Re: try-catch conflict with default-error-handler

Posted by ext2 <xu...@tongtech.com>.
Sorry, I forget to say, this is running on camel 2.2;

I have checked the camel's document and source-code; the camel-document say
" try-catch will disable the error-handler"; but while I checking the
source-code of camel , it only disable  error-handlers of node (which is
conjunction with doTry pattern).

 In the following example, only <filter> processor is conjunction with
<doTry>. So only filter processor's  error-handler is disabled. But
error-handlers of  other processor which defined inside filter is not
disabled.

So the catch-clause is not invoked. Is it a bug?

---------------------------------------------------------------------------
Follow route use a default-error-handler for the route, and also defined  a
custom exception handle logic using try-catch-pattern. 

But if the "myProcessRaiseError" raised exception the catch-clause cannot be
invoked; Why? Is it camel's bug?


<route>
      <from uri="ws:... "/>
	 <bean ...>
	<doTry>
     	 <filter>
      		<simple>${body} == 'firstChoice'</simple>
		      <bean ref="myProcess" />
		      <bean ref="myProcessRaiseError"/>
	      </filter>
		<doCatch>
			..some error handler...
		</doCatch>
	</doTry>
     <process ...>
</route>