gpt4 book ai didi

java - Camel doCatch 和 onException 优先级

转载 作者:行者123 更新时间:2023-11-30 06:44:15 26 4
gpt4 key购买 nike

我有一个路由,doTry() - doCatch() 对用于特定路由和一般的 onException()。

onException(Exception.class)
.handled(true)
.log(LoggingLevel.ERROR, "An error occurred: ${exception.stacktrace}")
.setBody(simple("${exception}"))
.setHeader(Exchange.HTTP_RESPONSE_CODE, constant(500));

from("direct:mydirect")
.routeId("myRoute")
.doTry()
.to("direct:internalroute")
.doCatch(Exception.class)
.log(LoggingLevel.ERROR, "EXCEPTION: ${exception.stacktrace}")
.process(exceptionHandlerProcessor)
.setHeader(Exchange.HTTP_RESPONSE_CODE, constant(500))
.marshal(new JsonDataFormat(JsonLibrary.Jackson))
.doFinally()
.log("FINALLY")
.endDoTry();

内部路由抛出一个普通的 java.lang.Exception

 throw new Exception("Catch me if you can!");

我希望在 doCatch() 中捕获异常并执行日志记录和处理操作。但是,会调用 onException()。

onException() 是否有更高的优先级?在我的理解中,本地捕获更为优先。

附言删除 onException() 会使 doCatch() 被调用。但是我有理由保留两者。 Camel 版本是:org.apache.camel:camel-cxf:2.21.0.000033-fuse-000001-redhat-1

最佳答案

当你有一个 doTry .. doCatch block 并且你调用另一个路由时,比如你通过

.to("direct:internalroute")

然后您需要关闭该路由上的错误处理,例如

from("direct:internalroute")
.errorHandler(noErrorHandler())

如果您希望所有错误处理仅通过 doTry .. doCatch block 发生。

关于java - Camel doCatch 和 onException 优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50878919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com