gpt4 book ai didi

java - Camel - 捕获全局 onException 中抛出的异常

转载 作者:行者123 更新时间:2023-12-02 09:43:34 25 4
gpt4 key购买 nike

我试图在全局 onException 中捕获我自己的异常。在捕获 Jaxb 异常后,我抛出了异常。但是 CustomException 不会被 onException 捕获

onException(Exception.class)
.handled(true)
.log("Globally Caught CustomException")
.end();

from("start:direct")
.doTry()
.unmarshal(soapMessage)
.doCatch(JAXBException.class)
.log("Locally Caught JAXBException")
.throwException(new CustomException()
.endDoTry();

最佳答案

根据https://people.apache.org/~dkulp/camel/try-catch-finally.html (请参阅Camel错误处理已禁用部分),当使用doTry .. doCatch .. doFinally时,Camel错误处理程序不适用。因此,任何 OnException 都不会被触发。

如果您想使用 OnException 捕获异常,您应该直接抛出它,而不是在 DoTry .. DoCatch 内。现在您可能会考虑创建两个 onException,一个处理 Exception.class,另一个处理 JAXBException.class

onException(Exception.class)
.handled(true)
.log("Globally Caught CustomException")
.end();
onException(JAXBException.class)
.handled(true)
.throwException(new CustomException())
.end();

但是第一个 onException 不会被调用,因为 Camel 不允许在已经处理错误的情况下进行进一步的错误处理。这是由 org.apache.camel.processor.FataFallbackErrorHandler 完成的,它捕获新的异常,记录警告,将其设置为 Exchange 上的异常,并停止任何进一步的路由(Camel In Action ,第二版)。

关于java - Camel - 捕获全局 onException 中抛出的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56851500/

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