0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Javaで例外からスタックトレースを文字列として取得する

Last updated at Posted at 2024-10-26

StringWriterPrintWriter を組み合わせて使用する方法があります。
例外のスタックトレース全体を文字列に変換することができます。

サンプルコード

StackTraceToStringExample.java
import java.io.PrintWriter;
import java.io.StringWriter;

public class StackTraceToStringExample {
    public static void main(String[] args) {
        try {
            // 例外を発生させる(例として、0で割り算)
            int result = 10 / 0;
        } catch (Exception e) {
            // スタックトレースを文字列として取得
            String stackTrace = getStackTraceAsString(e);
            System.out.println("スタックトレース:");
            System.out.println(stackTrace);
        }
    }

    public static String getStackTraceAsString(Throwable throwable) {
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        throwable.printStackTrace(pw);
        return sw.toString();
    }
}

解説

  1. StringWriter は、文字列データを蓄積するための Writer です。
  2. PrintWriter は、StringWriter に例外のスタックトレースを出力するために使用します。
  3. throwable.printStackTrace(pw); によって、例外のスタックトレースが StringWriter に書き込まれます。
  4. sw.toString(); でスタックトレースの文字列を取得します。

stackTraceには例外の詳細なスタックトレースが文字列として格納され、好きな場所で表示・処理することができます。

Throwable クラスを引数に使う理由

メソッドで Throwable クラスのインスタンスを引数にする場合、ExceptionError の両方に対応できるため、エラーや例外の種類に関わらず一括で処理できる柔軟な方法となります。サンプルコードでは、getStackTraceAsString メソッドに Throwable を引数として渡しているため、以下のように例外だけでなくエラーにも対応できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?