2012-02-04 73 views
1

我是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(); 
    } 

,但我不能管理我的异常。我试图用不同的方式来解决这个问题。为什么? 谢谢大家

回答