2012-01-09 15 views
1

私はカスタムビューリゾルバと例外リゾルバを持っています。 コントローラコードから例外がスローされると、例外リゾルバが呼び出され、例外はエラーメッセージとともにビューにマッピングされます。カスタムビューリゾルバからスローされた例外の処理

ただし、ビューリゾルバの1つから例外をスローすると、アプリケーションサーバに伝播し、登録された例外リゾルバで解決されません。

例外リゾルバはビューリゾルバの下にあるため、ビューリゾルバから返されたビューは解決される必要があるため、ビューリゾルバからの例外は外部にスローされます。そのような状況はうまく設計されています。

お勧めします。

答えて

1

通常、例外リゾルバがコントローラからスローされた例外を処理すると、エラーページを表示できるようにビュー名が返されます。

したがって、ビューリゾルバが例外をスローする場合は、どうしたら意味があるのですか?最終的に何らかの形でレンダリングする必要がありますが、ビューのリゾルバ自体ではない場合、誰がそのビューを解決するのでしょうか?

あなたの質問に答えるために、私は、標準のサーブレットコンテナメカニズム以外のビューリゾルバによってスローされた例外をキャッチするメカニズムを認識していません。ビューリゾルバ内でエラー条件が発生した場合は、(a)バグの場合は修正するか、(b)内にある内の例外をキャッチし、エラーを表示する別のビューをレンダリングすることをお勧めします。

+0

お返事ありがとう@skaffman。 ViewResolverの例外ハンドラが必要です。その中にいくつかのGoogle Closureテンプレートがレンダリングされていて、テンプレートのレンダリングに失敗したり、テンプレートをどこかに見つけることができない場合に例外がスローされることがあります。 ViewResolver自体の中の別のビュー? – schhajed

+0

@schhajed:ビューのリゾルバではなく、ビュー自体から例外がスローされると言っていますか?ビューリゾルバはビューをレンダリングせず、ビュー名を 'View'オブジェクトに変換するだけで、別々にレンダリングされます。 – skaffman

+0

はい、私の場合View **は** View **がGoogle Closureテンプレートオブジェクトをレンダリングするため、例外をスローすることができます。これは、適切な入力がないと失敗する可能性があります。提案してください。 – schhajed

関連する問題