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文)

△上に戻る