我是apache camel的新手(我使用的是2.8.1版本)。我正在使用这个框架,我理解(我希望)像路线这样的概念。现在我有了这个路线定义
try {
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
// TODO Auto-generated method stub
from("vm:internal").
split().method(DefaultSplitLogic.class, "split").
dynamicRouter(bean(router, "route"));
}
});
}catch (DefaultSplitLogicException e) {
// TODO: handle exception
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这是DefaultSpliLogic.class
公共类DefaultSplitLogic {
public Object[] split(Object o) throws DefaultSplitLogicException{
if(o instanceof Collection<?>){
Collection c = (Collection) o;
return c.toArray();
}
else {
throw new DefaultSplitLogicException("Default Splitting Logic not correct");
}
}
}
这是DefaultSplitLogicException.class
public class DefaultSplitLogicException扩展Exception {
/**
*
*/
private static final long serialVersionUID = 1L;
public DefaultSplitLogicException(String msg) {
// TODO Auto-generated constructor stub
super(msg);
System.err.println(msg);
}
public DefaultSplitLogicException(Throwable cause) {
super(cause);
}
}
我留下了路由器定义。
现在我想捕获我的异常(我确定我的异常被抛出)。
我正在将onException子句用于路由定义
try {
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
// TODO Auto-generated method stub
onException(DefaultSplitLogicException.class).handled(false);
from("vm:internal").
split().method(DefaultSplitLogic.class, "split").
dynamicRouter(bean(router, "route"));
}
});
}catch (DefaultSplitLogicException e) {
// TODO: handle exception
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但我无法管理我的例外情况。我尝试使用不同的这个条款但没有成功。为什么? 谢谢大家
答案 0 :(得分:1)
我想我找到了答案。它应该是2.8.1的错误。版本,修复为2.8.2 +