JavaA2Z

KAB-studio > プログラミング > JavaA2Z > printStackTraceとは

printStackTrace

日本語 積み上げ軌跡出力
英語 print stack trace
ふりがな ぷりんとすたっくとれーす
フリガナ プリントスタックトレース

解説

スタックトレースを出力するメソッド
 
Throwableクラスメソッド
投げられた例外の「例外クラス名」、コンストラクタで渡された「例外の説明」、呼び出しメソッドファイル名及び番号(つまり「スタックトレース」)、「Caused by」の4つを標準エラー出力に出力する。

例外が投げられた理由を簡単に取得できるため便利。デバッグの友。
引数を渡さずに呼び出す標準エラー出力に出力される。
引数PrintWriterクラスを渡すと、渡した文字出力ストリームを通して出力されるため、文字列ファイル等、好きな出力先を選択することもできる。

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
import java.io.PrintWriter;
import java.io.StringWriter;

public class Sample
{
    public static void main( String[] args )
    {
        // test01()メソッドを呼び出します。
        test01();
    }

    private static void test01()
    {
        // test02()メソッドを呼び出します。
        test02();
    }

    private static void test02()
    {
        try
        {
            // 例外を投げます。
            throw new Exception( "テスト" );
        }
        catch( Exception e )
        {
            // スタックトレースを出力します。
            e.printStackTrace();
            // java.lang.Exception: テスト
            //    at Sample.test02(Sample.java:24)
            //    at Sample.test01(Sample.java:16)
            //    at Sample.main(Sample.java:10)

            // このスタックトレースの内容は以下の通りです。

            //   投げられた例外のクラス
            //             ↓ 例外生成時に渡された文字列
            //             ↓         ↓
            // java.lang.Exception: テスト
            //    at Sample.test02(Sample.java:24)
            //    at Sample.test01(Sample.java:16)
            //    at Sample.main(Sample.java:10)
            //            ↑
            // スタックトレースです。一番下が最初に呼ばれた
            // メソッド、下から3番目が例外が投げられたメソッド
            // になります。
            // このスタックトレースから、Sampleクラスの
            // test02()メソッド(Sample.javaファイルの24行目)
            // でExceptionクラスの例外が投げられたことがわかります。

            // printStackTrace()メソッドで出力される文字列を
            // 取得したい場合には、PrintWriterクラスの
            // インスタンスを作り、その参照を
            // printStackTrace()メソッドに渡します。
            // (ここではPrintWriterクラスとStringWriterクラスを
            // 組み合わせて使用します)
            StringWriter stringWriter = new StringWriter();
            PrintWriter printWriter = new PrintWriter( stringWriter );
            e.printStackTrace( printWriter );
            // これで、StringWriterクラスのtoString()メソッドで
            // スタックトレースを取得できます。
            System.out.println( stringWriter.toString() );
            // java.lang.Exception: テスト
            //    at Sample.test02(Sample.java:24)
            //    at Sample.test01(Sample.java:16)
            //    at Sample.main(Sample.java:10)
        }
    }
}
// Sample.java
import java.io.PrintWriter;
import java.io.StringWriter;

public class Sample
{
    public static void main( String[] args )
    {
        // test01()メソッドを呼び出します。
        test01();
    }

    private static void test01()
    {
        // test02()メソッドを呼び出します。
        test02();
    }

    private static void test02()
    {
        try
        {
            // 例外を投げます。
            throw new Exception( "テスト" );
        }
        catch( Exception e )
        {
            // スタックトレースを出力します。
            e.printStackTrace();
            // java.lang.Exception: テスト
            //    at Sample.test02(Sample.java:24)
            //    at Sample.test01(Sample.java:16)
            //    at Sample.main(Sample.java:10)

            // このスタックトレースの内容は以下の通りです。

            //   投げられた例外のクラス
            //             ↓ 例外生成時に渡された文字列
            //             ↓         ↓
            // java.lang.Exception: テスト
            //    at Sample.test02(Sample.java:24)
            //    at Sample.test01(Sample.java:16)
            //    at Sample.main(Sample.java:10)
            //            ↑
            // スタックトレースです。一番下が最初に呼ばれた
            // メソッド、下から3番目が例外が投げられたメソッド
            // になります。
            // このスタックトレースから、Sampleクラスの
            // test02()メソッド(Sample.javaファイルの24行目)
            // でExceptionクラスの例外が投げられたことがわかります。

            // printStackTrace()メソッドで出力される文字列を
            // 取得したい場合には、PrintWriterクラスの
            // インスタンスを作り、その参照を
            // printStackTrace()メソッドに渡します。
            // (ここではPrintWriterクラスとStringWriterクラスを
            // 組み合わせて使用します)
            StringWriter stringWriter = new StringWriter();
            PrintWriter printWriter = new PrintWriter( stringWriter );
            e.printStackTrace( printWriter );
            // これで、StringWriterクラスのtoString()メソッドで
            // スタックトレースを取得できます。
            System.out.println( stringWriter.toString() );
            // java.lang.Exception: テスト
            //    at Sample.test02(Sample.java:24)
            //    at Sample.test01(Sample.java:16)
            //    at Sample.main(Sample.java:10)
        }
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2010/03/01
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。