[
https://issues.apache.org/activemq/browse/CAMEL-1144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=47860#action_47860
]
Claus Ibsen commented on CAMEL-1144:
------------------------------------
This new rule applies:
- If the thrown exception has a caused by then this exception is used for
selection, if no match found the original exception is used for selection
instead
I was wondering if we should do this cause by check for all the entire
exception hierarchy starting from the bottom and then recurring up?
1) RuntimeCamelException
2) +IOException
3) + FileNotFoundException
So Camel will start with (3) and then match up the tree until (1)
Currently we support tree level 1+2 but I guess we should support all levels
and start from the bottom, the real cause!
> Exceptions thrown from converters are not correctly handled
> -----------------------------------------------------------
>
> Key: CAMEL-1144
> URL: https://issues.apache.org/activemq/browse/CAMEL-1144
> Project: Apache Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 1.5.0
> Reporter: Martin Gilday
> Assignee: Claus Ibsen
> Priority: Critical
> Fix For: 1.5.1, 2.0.0
>
>
> Related nabble:
> http://www.nabble.com/Handling-converter-failure-td20830148s22882.html
> When an exception is thrown from a @Converter it is not correctly handled by
> onException. The handler is receiving a RuntimeCamelException and not
> checking the cause when determining the best handler.
> {code}
> /////Converter
> @Converter
> public static LocalDateTime toLocalDateTime(final Object localDateTime)
> {
> System.out.println("Converting to local date time");
> throw new IllegalArgumentException("Bad data");
> }
> /////Routes
> Routes routes = new RouteBuilder() {
> @Override
> public void configure() throws Exception {
>
> onException(IllegalArgumentException.class).handled(true).to("mock:exception");
> from("direct:test").convertBodyTo(LocalDateTime.class).to("mock:end");
> }
> };
> /////Test
> MockEndpoint endpoint = (MockEndpoint)
> camelContext.getEndpoint("mock:end");
> endpoint.expectedMessageCount(0);
> MockEndpoint endpoint2 = (MockEndpoint)
> camelContext.getEndpoint("mock:exception");
> endpoint2.expectedMessageCount(1);
> camelContext.createProducerTemplate().sendBody("direct:test", "test");
> endpoint.assertIsSatisfied();
> endpoint2.assertIsSatisfied();
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.