Java printStackTraceとは

JavaのprintStackTraceについてです。

目次

printStackTraceとは

  • printStackTraceは、Throwableクラスの「メソッド」で、printStackTraceメソッドで「スタックトレース」を出力します。
  • Throwableクラスは、すべての「例外」の基底クラスです。
    Throwableクラス
  • Throwableクラスのサブクラスは、Throwableクラスを「継承」しているのでprintStackTraceメソッドを使用できます。
  • 以下はJava8 API仕様のThrowableクラスのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Throwable.html

スタックトレースとは

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

printStackTraceメソッドを使用したサンプルコード

printStackTraceメソッドを使用したサンプルコードです。
17行目は、存在しないファイルを読みに行って例外を発生させています。
22行目は、printStackTraceメソッドで「スタックトレース」を出力させています。

package test1;

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

public class Test1 {
	public static void main(String[] args) {
		
		String dir = "D:\\workspace999";
		String filename = "test1.txt";

		try {
			//存在しないファイルを読みに行って例外を発生させている
	        List<String> line = Files.readAllLines
	                (Paths.get(dir, filename),Charset.forName("SHIFT_JIS"));


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

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

上記コードを実行し、printStackTraceメソッドで出力したスタックトレースです。
13行目のTest1.mainから始まり、1行目でNoSuchFileExceptionの例外が出力されています。

java.nio.file.NoSuchFileException: D:\workspace999\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.Sample.runSample(Test1.java:21)
	at test1.Test1.main(Test1.java:32)

関連の記事

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

△上に戻る