在异常的情况下,骆驼控制没有到达doFinally

时间:2014-08-26 09:21:03

标签: apache-camel

在下面的camel路由中有try和finally块在spring DSL中,如果返回404 Http状态码,控件就不会到达finally块。为什么会发生这种情况,因为期望是finally块应该无论try块中是否存在任何异常或错误,都会执行。返回的响应是:org.apache.camel.component.http.HttpOperationFailedException:HTTP操作失败,调用localhost:8080 / testUri

        <camel:doTry> 
          <from uri="http://localhost:8080/testTry"/>
          <!-- Non existence service called below returns 404 Exception--> 
          <to uri="http://localhost:8080/testUri" /> 
       <camel:doFinally>    
          <to uri="log:inFinally" />
       </camel:doFinally>
   </camel:doTry>   

更新我试图在try块中抛出异常,甚至抛出这个异常并在响应中返回,并且在finally块中调用根本没有执行。

1 个答案:

答案 0 :(得分:0)

这是因为您必须在应用程序的某处处理异常。如果将异常一直抛到camel上下文并且没有在那里处理,那么该交换的路由将停止并且doFinally永远不会发生。