2015-09-16 29 views
11

私はSpring 4とTomcatを使用しています。問題は、私のフィルタに(カスタムの)RuntimeExceptionをスローする必要がある場合があります(コントローラはコントローラにも到達していません)。問題は、Tomcatが理解できる例外を投げているわけではないので、500(内部サーバーエラー)に変換されます。私は、403禁止が500より良いと信じています(私のカスタム例外のため)。私は@ExceptionHandler@ControllerAdvice注釈を見ました。しかし、これらはコントロールがコントローラーに到達した場合にのみ機能します。フィルタでスローされた例外を処理する方法は?

今のところ、自分のフィルタのHTTPResponseでステータスを手動で403に設定しています。このシナリオを処理するより良い方法はありますか?

+1

[こちらの記事(http://stackoverflow.com/questions/29914717/servlet-filter-specific-exception-handling-in-java)]を参照してください。フィルタを拡張し、例外をスーパーで処理できます。 –

+0

@TimBiegeleisen - まあ、今のところ私は同様のアプローチに従っています:)。そのポストを指摘していただきありがとうございます。 – TheLostMind

+0

@TimBiegeleisen私は同様の問題に遭遇し、https://stackoverflow.com/questions/34595605/how-to-manage-exceptions-thrown-in-filters-in-spring/ここに興味があるかもしれない解決策を掲載しました。 43242424 – Raf

答えて

1

は、あなたがあなたのサービスに達すると、ヨーヨーがエラーしたいwathever行うことができ、

<error-page> 
    <exception-type>java.lang.RuntimeException</exception-type> 
    <location>/handleExceptionService</location> 
</error-page> 

だから、web.xmlにエラーハンドラを設定し、この

のようなものを使用する必要があります。

Good Luck !!!

0
You can add in web.xml 
<error-page> 
    <error-code>404</error-code> 
    <location>/error-404.html</location> 
</error-page> 
<error-page> 
    <error-code>403</error-code> 
    <location>/access_denied.html</location> 
</error-page> 
関連する問題