Я новичок в 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
открытый класс DefaultSplitLogicException расширяет исключение {
/**
*
*/
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();
}
, но не могу управлять своим исключением.Я пытался по-разному использовать эту статью, но безуспешно.Зачем?Спасибо всем