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

所以我添加了

onException();
onMyTypeException();


我还在路线生成器中创建了相应的方法

public OnExceptionDefinition onException(){
return onException(Exception.class)

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


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

有任何想法吗?

最佳答案

骆驼会先寻找明确的异常匹配...但是我认为您需要对子句进行初始化。您不需要在您的方法中返回它们,等等。

总体而言,请确保在设置任何路由之前,在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");
    ...
}

09-11 02:56