1. ホーム
  2. java

[解決済み] 例外の印刷とException.getMessageの比較

2022-02-17 21:12:48

質問

例外に関して、以下の2つのコードを使用する際のベストプラクティスはありますか?

//code1

} catch (SomeException e) {
    logger.error("Noinstance available!", e.getMessage());
}

//code2
} catch (SomeException e) {
    logger.error("Noinstance available!", e);
}

例外のgetMessageメソッドは、どのような場合に使用するのですか?

どのように解決するのですか?

1つ目はメソッド error を受け入れる String を最初のパラメータとし Throwable を第2パラメータとして指定します。

e.getMessage()Throwable .

このコードは、次のようになります。

} catch (SomeException e) {
    // No stack trace
    logger.error("Noinstance available! " + e.getMessage());
}

と比較すると

} catch (SomeException e) {
    // Prints message and stack trace
    logger.error("Noinstance available!", e);
}

最初のものは、メッセージのみを表示します。2番目はスタックトレース全体も表示します。

スタックトレースを表示する必要があるかどうかは、文脈に依存します。

例外が発生する理由がわかっている場合、スタックトレース全体を表示するのは良いアイデアではありません。

わからない場合は、エラーの原因を簡単に見つけることができるよう、トラックトレース全体を表示するのがよいでしょう。