2015-07-10 90 views
1

选择块在下面的代码,任何人都可以请解释doTry做什么选择块,为什么它不赶RuntimeCamelException?异常处理骆驼 - 在doTry

<doTry> 
      <process ref="msgProcessor" /> 
      <choice> 
       <when> 
        <simple>"false" == "true" &amp;&amp; ${exchangeProperty.status} == ${ref:SUCCESS}</simple> 
        <process ref="queryProcessor" /> 
       </when> 
      </choice> 
      <choice> 
       <when> 
        <simple>"false" == "true" &amp;&amp; ${exchangeProperty.status} == ${ref:SUCCESS}</simple> 
        <process ref="compareProcessor" /> 
       </when> 
      </choice> 
      <doCatch> 
       <exception>org.apache.camel.RuntimeCamelException</exception> 
       <exception>java.lang.Exception</exception> 
      </doCatch> 
     </doTry> 

我仍然得到以下异常:

org.apache.camel.RuntimeCamelException: Scanner aborted because of an IOException! 
at org.apache.camel.processor.Splitter$SplitterIterable$1.hasNext(Splitter.java:171) 
at org.apache.camel.processor.MulticastProcessor.doProcessParallel(MulticastProcessor.java:268) 
at org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:225) 
at org.apache.camel.processor.Splitter.process(Splitter.java:104) 
+0

我有类似的问题。它看起来像.doTry()和.choice()不能很好地一起玩。 –

回答

0

我在第一次看的猜测是,你的例外是不是由尝试捕捉处理,被传播备份到路线的错误处理。

尝试加入一些处理,当你发现错误: - 集处理=真 - 落个自定义日志 - 停止,结束对交换处理。

这将使它很容易确认,如果你的错误处理程序被调用。