1

私は現在、非常にシンプルなMVCフレームワークBear Bibeault's Front Manを使用しています。これはよく知られていない人にとっては、少なくともSpring MVCに似ています。私が抱えている問題の1つは、例外を適切に処理する方法です。Java MVC Webアプリケーションのエラーをどのように処理/ログしますか?

私は現在、このような何かをやっている、

try { 
    //do something 
}catch (Exception ex) { 
    logger.error("Logging error", ex); 
    Map model = new HashMap(); 
    model.put("error", ex.getLocalizedMessage()); 
    cc.setScopedVariable("model", model); 
    cc.forwardToView(ERROR_VIEW); 
} 

は、基本的にエラービューページを楽しみにして私を例外をログに記録します。

しかし、これはこれを行う正しい方法ではないと私に襲いかかります。これは非常にDRYではない定型コードをたくさん作成します。

ウェブアプリケーションで例外を処理/ログするより良い方法はありますか?

答えて

5

error JSP fileの中にすべてのログを記録できます。

これをweb.xmlファイルに追加します。あなたのJSPファイル内

<error-page> 
<exception-type>java.lang.Throwable</exception-type> 
<location>/error.jsp</location> 
</error-page> 

次にあなたが<% %>内のあなたのロギングを置くと同時に、エラーを表示することができます

<%@page isErrorPage="true" %> 

を追加します。すべてのロギングロジックが1か所にあり、コードがよりきれいに見えるようになります。


JSPファイルでスクリプトレットを使用する代わりに、サーブレットの位置を指定することができます。サーブレットは、すべての処理を処理してからJSPページに転送できます。

さまざまな例外に対してこの手法を使用することもできます。そのため、例外を別々に処理することができます。

+0

エラーJSPページでスクリプレットを使用する必要がありますか?私はJSPのコードから離れようとしています。 –

+0

ビューのJSPにはエラー処理コードが含まれていてはなりません。エラーは、適切なセグメントで処理し、ユーザーフレンドリーなメッセージを出力する必要があります。 – doomspork

+1

JSPページの代わりにサーブレットを使用することもできます。 – scheibk

1

例外にはさまざまな種類があります。そのため、どのように表示するかを最初に特定する必要があります。エラーを表示するページにそれらを転送することは、コンテキストに関係なくエラーを表示することが覚えているすべてのエラーに最適な選択ではない場合があります。

あなたが扱うことができる1つの方法は、すべての重大なエラーをログに記録し、ユーザーがアクセスしてレビューできる場所をウェブサイト上に置くことです。 (私はこれに類似したプロジェクトに取り組みました。ユーザーはアプリケーションの進行を妨げないような警告やエラーを見直すことができました)。エラーが発生したページにそれらを返すことができますエラーメッセージが表示されます。 AJAX/Cometを使用すると、エラーが発生したページからリアルタイムエラーを取り除くことなく、ユーザーにリアルタイムエラーを表示することができます。

関連する問題