0

アプリケーションでキャッチされない例外がある場合はいつでも、カスタム ロジックを実行したいと考えています。通常、私は次のようなことをします:

Thread.setDefaultUncaughtExceptionHandler(myCustomHandler);

ただし、ThreadGoogle App Engine ではロックダウンされています。上記のコードは、セキュリティ例外を発生させます。Google App Engine で同様の機能を実現する方法はありますか?

編集:私は自分のアプローチをサーブレットフィルターとして実装しました。Java Web プログラミングに関する私の経験はかなり限られています。誰かがそのようなアプローチについてコメントできますか? AppEngine のすべてのリクエストは HTTP リクエストとして発生するため、これは包括的なソリューションだと思います。

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

    try {
        chain.doFilter(request, response);
    } catch (RuntimeException ex) {
        // Work my magic here...
        throw ex;
    }
}
4

1 に答える 1

1

サーブレットは独自にスレッドを処理するため、この方法でスレッドを台無しにしないでください。

代わりに、サーブレットError Handlerをインストールします。

<error-page>
    <error-type>com.package.YourException</error-type>
    <location>/errors/handler</location>
</error-page>

次に/errors/handler、エラーを処理して適切な応答を返すサーブレットにマップします。

于 2012-06-14T01:41:31.877 に答える