2012-02-04 72 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(); 
    } 

,但我不能管理我的異常。我試圖用不同的方式來解決這個問題。爲什麼? 謝謝大家

回答