2

最近、コードレビューツールとしてソナーを使い始めました。ソナーを実行しているコードを分析すると、スタック トレースの出力が Java コーディング標準に違反していると反映されました。スタック トレースの代わりに、次のことを試しました。

e.getcause()

しかし、これはスタックトレースによって行われたように例外をクリアしませんでした

4

2 に答える 2

4

エラー処理は、Java を含め、どの環境でもトリッキーになる可能性があります。私はソナーを使用したことはありませんが、Java エラー処理の一般的な推奨事項についてコメントできます。

e.printStackTrace() は、スタック トレースを標準エラーに出力するだけなので、一般的に推奨されません。このため、この出力先を実際に制御することはできません。

ロギング フレームワーク (logback、slf4j、java.util.logging、log4j など) を使用することをお勧めします。これにより、エラーが記録される場所とログ保持ポリシーを制御できます。

そして通常、例外をキャッチし、それが予期しない動作である場合はログに記録し、新しい例外 (おそらくアプリケーションに固有のもの) をスローするか、正常に動作し続けるために必要なことを行います。

java.util.logging を使用している場合は、次のようなことができます。

class YourClass
{
Logger logger = Logger.getLogger(YourClass.class.getName());

...

public void someMethod() throws YourException
{
  try
  {
    // your code here
  } catch (NullPointerException e)
  {
    String message = "Unexpected NullPointerException in processing!";
    logger.log(Level.ERROR, message, e);

    throw new YourException(message, e);
  }
}

}

お役に立てれば!

于 2013-07-24T19:53:49.187 に答える