在camel路由中捕获异常和异常的子类

时间:2012-03-16 20:20:33

标签: java apache-camel

我有一个camel路由,我正在使用自己的路由构建器来侦听我在代码中创建的特定类型的异常。

所以在我的路线上,我添加了

onException();
onMyTypeException();

我还在路线构建器

中创建了相应的方法
public OnExceptionDefinition onException(){
return onException(Exception.class)

....
public OnExceptionDefinition onMyTypeException(){
return onException(MyTypeException.class)
....

问题是,onException()似乎捕获了所有内容,而不是让我先捕获更具体的错误。这里的想法是,在我的系统中,我没有考虑到每种类型的错误,所以如果有些错过,请在onException()中捕获它们

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

Camel将首先查找显式异常匹配...但我认为你的子句初始化是个问题。你不应该在你的方法等中返回它们......

总体而言,确保在设置任何路由之前在RouteBuilder的configure()方法中定义onException()子句...

请参阅this page了解更多详情...类似这样......

public void configure() throws Exception {

    onException(Exception.class).handled(true).log("general exception!!!");
    onException(MyException.class).handled(true).log("my exception!!!");

    from("direct:start").to("bean:myBean");
    ...
}

答案 1 :(得分:0)

您可以在此处阅读有关Camel的错误处理的整体信息 http://camel.apache.org/error-handling-in-camel.html

对于使用onException(也称为exception子句),这里有文档:http://camel.apache.org/exception-clause.html

然而,Camel中的错误处理非常灵活和精细。并且处理和处理集成用例中的错误通常很难。这就是为什么我们在“骆驼在行动”一书中花了整整一章来广泛报道这一点。所以如果你拿到了这本书,那么一定要阅读第5章,它会对你有所帮助。