【发布时间】:2019-06-12 20:14:09
【问题描述】:
我正在尝试在 onException 中处理 apache camel 中的异常。如果可能的话,有人可以指导我吗?
我已经写了另一个 onException 来处理所有的异常,但是流程并没有转移到那个异常块
onException(SchemaValidationException.class)
.to("xslt:stylesheet/example/TransformErrorBlock.xsl?saxon=true")
.log("Validation error in received message, response sent: ${body}")
.handled(true);
我的期望是如果这个块中有异常,它应该被另一个 onException 块捕获
【问题讨论】:
-
onException是在您的路线上方定义的吗?据我记得在 RouteBuilder 级别上,它必须在路由之前定义。或者尝试在路由级别定义 on 异常(至少测试行为),就像在here 中描述的那样。 - 编辑:链接的帖子确认必须在路由之前定义路由构建器级别的异常处理程序 -
OP 期望他们的
OnException块中的异常被连接到同一个RouteBuilder中的另一个包罗万象的OnException子句。正如下面的@Claus Ibsen 所证实的那样,它不会起作用。 -
onException(SchemaValidationException.class).doTry() .to("xslt:stylesheet/example/TransformErrorBlock.xsl?saxon=true") .log("收到消息中的验证错误,已发送响应: ${body}").doCatch(Exception.class).log("无法处理输入文件") .handled(true);我做过这样的事情,但似乎不是一种优雅的处理方式
-
谢谢,我误解了这个问题。