2012-03-16 42 views
0

自分のルートビルダを使用して、自分のコードで作成した特定の種類の例外をリッスンしています。例外のキャッチサブクラスとキャメルルートの例外

ので、私のルートに、私は

onException(); 
onMyTypeException(); 

を追加している私も、問題がある、私のルートビルダー

public OnExceptionDefinition onException(){ 
return onException(Exception.class) 

.... 
public OnExceptionDefinition onMyTypeException(){ 
return onException(MyTypeException.class) 
.... 

で対応するメソッドを作成して、onExceptionをは()の代わりに、すべてをキャッチしているようですより具体的なエラーを最初に捕まえることができます。ここでのアイデアは私のシステムではすべてのタイプのエラーを説明していないので、もしかしたら、onException()でキャッチしてください。

アイデア?

答えて

3

最初に明示的な例外の一致が検索されますが、私はあなたの句の初期化が問題だと思います。あなたは

...どのルートが設定されている前に、あなたはRouteBuilderのconfigure()メソッドでは、あなたのonExceptionを()句を定義することを確認し、全体的な

...など、あなたの方法でそれらを返却する必要はありません詳細は this page ...このような何か...

public void configure() throws Exception { 

    onException(Exception.class).handled(true).log("general exception!!!"); 
    onException(MyException.class).handled(true).log("my exception!!!"); 

    from("direct:start").to("bean:myBean"); 
    ... 
} 
+0

単純な例外をキャッチすると、単純なログを記録しません。これが私の主要ルートビルダーからコードを取り出して、きれいに見えるようにしたかった理由です。 – Derek

+0

@Derekの場合、必要に応じてヘルパーメソッドでこれらを定義できます。メソッドがconfigure()メソッドの先頭から呼び出され、RouteBuilderのコンテキストを使用していることを確認するだけです。また、私はCamel 2.9.1まで可能です。 –

0

を参照してくださいあなたは、エラーがここにキャメルと http://camel.apache.org/error-handling-in-camel.html

の取り扱いについてとAlである(onExceptionをを使用しての全体的な読むことができますいわゆる例外条項)、ここに文書があります:http://camel.apache.org/exception-clause.html

しかし、キャメルのエラー処理は非常に柔軟で精巧です。また、統合ユースケースでの対処とエラーの処理はしばしば困難です。それで、私たちはこれを広範にカバーするためにCamel in Actionの本の全章を執筆しました。だから、あなたが本を手に入れたら、5章を必ず読んでください。

+0

これが私の実装の基礎として使用したものです。これはCamel 2.6のように機能しましたか?それは私が使っているバージョンです。 – Derek

+0

この本はCamel 2.5.0だった当時の最新のCamelバージョンをカバーしていました。それはあなたのために働く場合は、あなたが使用するキャメルバージョンであなた自身を試してみる必要があります。私たちは新しいCamelのリリースでバグを修正し、改良しました(そして数回新しいバグなどを紹介します) –