私のアプリケーションでは、PMDを介してコードを実行しています。次のメッセージが表示されます。
- printStackTrace();は避けてください。代わりにロガー呼び出しを使用してください。
どういう意味ですか?
私のアプリケーションでは、PMDを介してコードを実行しています。次のメッセージが表示されます。
- printStackTrace();は避けてください。代わりにロガー呼び出しを使用してください。
どういう意味ですか?
printStackTrace()
例外を呼び出すと、トレースが書き込まれSystem.err
、他の場所にルーティングする (またはフィルターする) のが難しくなります。これを行う代わりに、ロギング フレームワーク (または Apache Commons Logging などの複数のロギング フレームワークのラッパー) を使用し、そのフレームワーク (例: logger.error("some exception message", e)
) を使用して例外をログに記録することをお勧めします。
これにより、次のことが可能になります。
製品品質のプログラムは、エラーやその他の診断を報告するために、多くの代替ログ (log4j、logback、java.util.logging など) のいずれかを使用する必要があります。これには多くの利点があります。
対照的に、printStackTrace のみを使用する場合、デプロイヤ / エンド ユーザーはほとんど制御できず、不適切な状況でログ メッセージが失われたり、エンド ユーザーに表示されたりする可能性があります。(そして、ランダムなスタック トレースほど臆病なユーザーを怖がらせるものはありません。)
ほとんどすべてのロギング フレームワークは、メッセージとともにスロー可能なオブジェクトを渡すことができるメソッドを提供します。お気に入り:
public trace(Marker marker, String msg, Throwable t);
スロー可能なオブジェクトのスタックトレースを出力します。