0

現在、カスタム サーブレット フィルターを使用してすべての例外をキャッチするアプリケーションに取り組んでいます。

  <filter-mapping>
    <filter-name>ExceptionFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

try {
    chain.doFilter(request, response);
} catch (Throwable t) {
        if (request instanceof HttpServletRequest) {
            log.error(((HttpServletRequest) request).getRequestURL());
        }
        log.error("Exception:", t);
        String path = "/error.do";
        request.getRequestDispatcher(path).forward(request, response);
}
}

しばらく調査した結果、例外を処理してマッピングを表示する簡単な方法として SimpleMappingExceptionResolver が見つかりました。両方を使用することはできませんが、ある方法を他の方法よりも優先する理由はわかりません。

リゾルバーを使用してさまざまなエラーをさまざまなビューにマップする方が簡単であることは理解していますが、使用するエラー ビューは 1 つだけです。そのようなこと。

春の専門家の皆様、どうぞよろしくお願いいたします。

4

1 に答える 1

0

正直に言うと、Javaで実行できる最も高価な(パフォーマンスの点で)ことの1つに例外をスローします。(誤解しないでください。これは、例外の使用に反対するステートメントではありません。)しかし、そのフィルターの1つで多くの例外を処理する必要があるためにパフォーマンスの問題が深刻に発生した場合は、他の本当に深刻な問題が確実に発生します。

したがって、結果として、フィルターまたはリゾルバーの実行時のパフォーマンスについてはあまり考えるべきではありません。コードが少なく、コードが理解しやすく、バグが少ないという点で、どちらがプロジェクトに適しているかを考えてみてください。

于 2012-04-20T19:06:54.247 に答える