Apache Camel - Исключение - Как поймали исключение - PullRequest
1 голос
/ 04 февраля 2012

Я новичок в 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();
    }

, но не могу управлять своим исключением.Я пытался по-разному использовать эту статью, но безуспешно.Зачем?Спасибо всем

1 Ответ

1 голос
/ 05 февраля 2012

Я думаю, что нашел ответ.Это должна быть ошибка 2.8.1.версия, исправленная с 2.8.2 +

http://camel.465427.n5.nabble.com/Cannot-handle-Exception-thrown-from-Splitter-Expression-td3286043.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...