Java Tips | 実務ユーティリティ:StackTrace→String

Java Java
スポンサーリンク
スポンサーリンク

なぜ「StackTrace→Stringユーティリティ」が業務で役に立つのか

業務システムでは、例外が発生したときに「どこで」「何が」起きたのかを正確に把握することがとても重要です。 そのときに頼りになるのが スタックトレース(StackTrace) です。スタックトレースには、例外が発生したクラス・メソッド・行番号、そしてその呼び出し経路がすべて詰まっています。

通常、Javaでは e.printStackTrace() を使うと標準エラー出力にスタックトレースが表示されますが、 業務システムでは「ログフレームワークに渡したい」「監査用に文字列として保存したい」「APIレスポンスに一部だけ載せたい」など、 スタックトレースを「文字列」として扱いたい場面 がよく出てきます。

そこで便利なのが「StackTrace→Stringユーティリティ」です。 例外オブジェクトからスタックトレースを取り出し、文字列として扱えるようにすることで、 ログ出力・監査・通知・デバッグなど、さまざまな用途に応用できるようになります。

ここから、プログラミング初心者向けにステップバイステップで考えながら、 実務で使える StackTrace→Stringユーティリティを丁寧に解説していきます。

ステップ1 スタックトレースとは何かをイメージで理解する

「例外がたどってきた道の地図」です

まず、スタックトレースが何を表しているのかをイメージで押さえておきます。

例外が発生したとき、Javaは次のような情報を持っています。

  • どのクラスのどのメソッドで例外が投げられたか
  • そのメソッドを呼び出したのはどのメソッドか
  • さらにその呼び出し元はどこか…という呼び出しの連鎖

これを「上から順番に」並べたものがスタックトレースです。

例えば、次のようなコードを考えます。

public class Sample {

    public static void main(String[] args) {
        a();
    }

    static void a() {
        b();
    }

    static void b() {
        throw new RuntimeException("エラー発生");
    }
}
Java

このプログラムを実行すると、スタックトレースは次のようなイメージになります。

Exception in thread "main" java.lang.RuntimeException: エラー発生
    at Sample.b(Sample.java:12)
    at Sample.a(Sample.java:8)
    at Sample.main(Sample.java:4)

これが「スタックトレース」であり、 「例外がどの経路を通ってここまで来たか」を示す地図 のようなものです。

タイトルとURLをコピーしました