我有一个带有 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() 是否有更高的优先级?据我了解,本地捕捞更为优先。
PS 删除 onException() 会调用 doCatch()。但是我有理由保留两者。骆驼版是:org.apache.camel:camel-cxf:2.21.0.000033-fuse-000001-redhat-1