如何在Apache CAMEL中处理异常块中的异常

00jrzges  于 2023-05-28  发布在  Apache
关注(0)|答案(2)|浏览(165)

我试图在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块中被捕获

qij5mzcb

qij5mzcb1#

你不能这样做,因为Camel的设计只允许onException块处理异常,否则当onException A被onException处理时,你可能会以无限循环结束,这会导致一个新的异常,然后可能会再次被onException A处理,因此循环中的无限循环。

gijlo24d

gijlo24d2#

这对我很有效:

onException(SalesforceException.class)
    .handled(true)
    .log("mai hua")
    .process((exchange) -> {
        Exception e = new Exception("Some Exception");
        exchange.setProperty("CustomException", e);
    })
    .to("direct:exception");

onException(Exception.class)
    .handled(true)
    .log("mai bhi hua2");

from("direct:exception")
    .log("mai bhi hua in route")
    .process(exchange -> {
        throw exchange.getProperty("CustomException", Exception.class);
    });

相关问题