最近、コードレビューツールとしてソナーを使い始めました。ソナーを実行しているコードを分析すると、スタック トレースの出力が Java コーディング標準に違反していると反映されました。スタック トレースの代わりに、次のことを試しました。
e.getcause()
しかし、これはスタックトレースによって行われたように例外をクリアしませんでした
最近、コードレビューツールとしてソナーを使い始めました。ソナーを実行しているコードを分析すると、スタック トレースの出力が Java コーディング標準に違反していると反映されました。スタック トレースの代わりに、次のことを試しました。
e.getcause()
しかし、これはスタックトレースによって行われたように例外をクリアしませんでした
エラー処理は、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);
}
}
}
お役に立てれば!