在下面的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块中调用根本没有执行。
答案 0 :(得分:0)
这是因为您必须在应用程序的某处处理异常。如果将异常一直抛到camel上下文并且没有在那里处理,那么该交换的路由将停止并且doFinally永远不会发生。