Java printStackTraceとは

JavaのprintStackTraceについてです。

目次

仕組み printStackTraceとは
  スタックトレースとは
使用例 printStackTraceメソッドでスタックトレースを出力する
  スタックトレースのサンプル

printStackTraceとは

  • printStackTraceは、Throwableクラスの「メソッド」です。
  • printStackTraceメソッドは、「スタックトレース」を出力します。print + StackTraceです。
  • Throwableクラスは、すべての例外クラスの親クラスです。
  • Throwableクラスの子クラスは、Throwableクラスを「継承」しているのでprintStackTraceメソッドを使用できます。

以下はJava8 API仕様のThrowableクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Throwable.html

スタックトレースとは

  • 実行したメソッドの時系列の一覧です。
  • stack=積み重ね、trace=跡です。
  • 例外発生時は、例外が発生したメソッドと例外が発生するまでに経てきたメソッドがわかります。
  • 新しいものが上に表示され古いものが下に表示されます。

printStackTraceメソッドでスタックトレースを出力する

printStackTraceメソッドでスタックトレースを出力するサンプルです。

package test1;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

public class Test1 {
	public static void main(String[] args) {
        Path path1 = Paths.get("D:\\test99","test1.txt");
        Charset charset = Charset.forName("MS932");

		try {
			//存在しないファイルを読みに行って例外を発生させる
			List<String> line = Files.readAllLines(path1,charset);

		} catch (IOException e) {
			e.printStackTrace();  // スタックトレースを出力する
		}
 	}
}

16行目は、存在しないフォルダのファイルを読みに行って例外を発生させています。
19行目は、printStackTraceメソッドで「スタックトレース」を出力させています。

スタックトレースのサンプル

上記コードを実行し、printStackTraceメソッドで出力したスタックトレースです。

java.nio.file.NoSuchFileException: D:\test99\test1.txt
	at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
	at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
	at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
	at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:230)
	at java.nio.file.Files.newByteChannel(Files.java:361)
	at java.nio.file.Files.newByteChannel(Files.java:407)
	at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
	at java.nio.file.Files.newInputStream(Files.java:152)
	at java.nio.file.Files.newBufferedReader(Files.java:2784)
	at java.nio.file.Files.readAllLines(Files.java:3202)
	at test1.Test1.main(Test1.java:16)

12行目のTest1.mainから始まり、1行目でNoSuchFileExceptionの例外が出力されています。
新しいものが上に表示され古いものが下に表示されます。

関連の記事

Java 検査例外のサンプル(チェック例外)
Java 非検査例外のサンプル(非チェック例外)
Java throw 例外処理をスローするサンプル
Java 独自の例外を作成するサンプル
Java リソースを自動でクローズする(try-with-resources文)

△上に戻る