anchor.diff:  You can use all of the above mentioned exception clause features in the
   Spring DSL as well. Here are a few examples:
   
  -* Global scoped - *Available in Camel 2.0*
  -/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/onexception/deadLetterChannelHandledExampleTest.xml
  +* Global scoped
  +
  +[source,xml]
  +----
  +<!-- setup our error handler as the deal letter channel -->
  +<bean id="errorHandler" class="org.apache.camel.builder.DeadLetterChannelBuilder">
  +    <property name="deadLetterUri" value="mock:error"/>
  +</bean>
  +
  +<!-- this is our POJO bean with our business logic defined as a plain spring bean -->
  +<bean id="orderService" class="org.apache.camel.spring.processor.onexception.OrderService" />
  +
  +<!-- this is the camel context where we define the routes -->
  +<!-- define our error handler as a global error handler -->
  +<camelContext errorHandlerRef="errorHandler" xmlns="http://camel.apache.org/schema/spring">
  +
  +  <onException>
  +    <!-- the exception is full qualified names as plain strings -->
  +    <!-- there can be more just add a 2nd, 3rd exception element (unbounded) -->
  +    <exception>org.apache.camel.spring.processor.onexception.OrderFailedException</exception>
  +    <!-- we can set the redelivery policy here as well -->
  +    <redeliveryPolicy maximumRedeliveries="1" />
  +    <!-- mark this as handled -->
  +    <handled>
  +      <constant>true</constant>
  +    </handled>
  +    <!-- let our order service handle this exception, call the orderFailed method -->
  +    <bean ref="orderService" method="orderFailed" />
  +    <!-- and since this is a unit test we use mock for assertions -->
  +    <to uri="mock:error" />
  +  </onException>
  +
  +  <route>
  +    <!-- the route -->
  +    <from uri="direct:start" />
  +    <!-- in the normal route then route to our order service and call handleOrder method -->
  +    <bean ref="orderService" method="handleOrder" />
  +    <!-- and since this is a unit test we use mock for assertions -->
  +    <to uri="mock:result" />
  +  </route>
  +
  +</camelContext>
  +----
   
   * Route specific scoped
  -/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/onexception/onExceptionSubRouteTest.xml
  -
  +
  +[source,xml]
  +----
  +<!-- setup our error handler as the deal letter channel -->
  +<bean id="deadLetter" class="org.apache.camel.builder.DeadLetterChannelBuilder">
  +    <property name="deadLetterUri" value="mock:dead"/>
  +</bean>
  +
  +<!-- the default error handler used in the 2nd route -->
  +<bean id="defaultErrorHandler" class="org.apache.camel.builder.DefaultErrorHandlerBuilder"/>
  +
  +<!-- this is our POJO bean with our business logic defined as a plain spring bean -->
  +<bean id="orderService" class="org.apache.camel.spring.processor.onexception.OrderService"/>
  +
  +<!-- this is the camel context where we define the routes -->
  +<camelContext xmlns="http://camel.apache.org/schema/spring">
  +
  +    <route errorHandlerRef="deadLetter">
  +        <from uri="direct:start"/>
  +        <onException>
  +            <exception>org.apache.camel.spring.processor.onexception.OrderFailedException</exception>
  +            <redeliveryPolicy maximumRedeliveries="1"/>
  +            <handled>
  +                <constant>true</constant>
  +            </handled>
  +            <bean ref="orderService" method="orderFailed"/>
  +            <to uri="mock:error"/>
  +        </onException>
  +        <bean ref="orderService" method="handleOrder"/>
  +        <to uri="mock:result"/>
  +    </route>
  +
  +    <!-- The exception clause specified in the first route will not be used in this route -->
  +    <route errorHandlerRef="defaultErrorHandler">
  +        <from uri="direct:start_with_no_handler"/>
  +        <bean ref="orderService" method="handleOrder"/>
  +        <to uri="mock:result"/>
  +    </route>
  +
  +</camelContext>
  +----
  +
  
positive.code: We want to handle certain exceptions specially so we add
  a *`onException`* clause for that exception.
  
  /camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionProcessorInspectCausedExceptionTest.java
  
  So what happens is that whenever a *`MyFunctionalException`* is thrown it
  is being routed to our processor *`MyFunctionFailureHandler`*. So you
  
negative.code: regards the Exchange as *failure handled*. So our processor is the end
  of the route. So lets look the code for our processor.
  
  [source,java]
  ----
      public static class MyFunctionFailureHandler implements Processor {
  
          @Override
          public void process(Exchange exchange) throws Exception {
              // the caused by exception is stored in a property on the exchange
              Throwable caused = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Throwable.class);
              assertNotNull(caused);
              // here you can do what you want, but Camel regard this exception as
              // handled, and
              // this processor as a failurehandler, so it wont do redeliveries.
              // So this is the
              // end of this route. But if we want to route it somewhere we can
              // just get a
              // producer template and send it.
  
              // send it to our mock endpoint
              exchange.getContext().createProducerTemplate().send("mock:myerror", exchange);
          }
      }
  ----
  
  Notice how we get the *caused by* exception using a property on the Exchange.
  This is where Camel stores any caught exception during processing. So
  