在下面的代码中,有没有人可以解释一下在try中块的选择以及为什么它没有捕获RuntimeCamelException?
<doTry>
<process ref="msgProcessor" />
<choice>
<when>
<simple>"false" == "true" && ${exchangeProperty.status} == ${ref:SUCCESS}</simple>
<process ref="queryProcessor" />
</when>
</choice>
<choice>
<when>
<simple>"false" == "true" && ${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 :(得分:0)
我的第一眼看到的猜测是你的异常没有被try catch处理,而是被传播回到路由的错误处理。
尝试在发现错误时添加一些处理: - set handling = true - 删除自定义日志 - 停止在交易所结束处理。
这样可以很容易地确认是否正在调用错误处理程序。