言語

Throwable.PrintStackTrace メソッド

定義

オーバーロード

名前 説明
PrintStackTrace(PrintStream)

このスロー可能なオブジェクトとそのバックトレースを、指定された印刷ストリームに出力します。

PrintStackTrace(PrintWriter)

このスロー可能ファイルとそのバックトレースを、指定された印刷ライターに出力します。

PrintStackTrace()

このスロー可能とそのバックトレースを標準エラー ストリームに出力します。

PrintStackTrace(PrintStream)

このスロー可能なオブジェクトとそのバックトレースを、指定された印刷ストリームに出力します。

[Android.Runtime.Register("printStackTrace", "(Ljava/io/PrintStream;)V", "GetPrintStackTrace_Ljava_io_PrintStream_Handler")]
public virtual void PrintStackTrace(Java.IO.PrintStream s);
[<Android.Runtime.Register("printStackTrace", "(Ljava/io/PrintStream;)V", "GetPrintStackTrace_Ljava_io_PrintStream_Handler")>]
abstract member PrintStackTrace : Java.IO.PrintStream -> unit
override this.PrintStackTrace : Java.IO.PrintStream -> unit

パラメーター

s
PrintStream

PrintStream 出力に使用する

属性

注釈

このスロー可能なオブジェクトとそのバックトレースを、指定された印刷ストリームに出力します。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象

PrintStackTrace(PrintWriter)

このスロー可能ファイルとそのバックトレースを、指定された印刷ライターに出力します。

[Android.Runtime.Register("printStackTrace", "(Ljava/io/PrintWriter;)V", "GetPrintStackTrace_Ljava_io_PrintWriter_Handler")]
public virtual void PrintStackTrace(Java.IO.PrintWriter s);
[<Android.Runtime.Register("printStackTrace", "(Ljava/io/PrintWriter;)V", "GetPrintStackTrace_Ljava_io_PrintWriter_Handler")>]
abstract member PrintStackTrace : Java.IO.PrintWriter -> unit
override this.PrintStackTrace : Java.IO.PrintWriter -> unit

パラメーター

s
PrintWriter

PrintWriter 出力に使用する

属性

注釈

このスロー可能ファイルとそのバックトレースを、指定された印刷ライターに出力します。

1.1 で追加されました。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象

PrintStackTrace()

このスロー可能とそのバックトレースを標準エラー ストリームに出力します。

[Android.Runtime.Register("printStackTrace", "()V", "GetPrintStackTraceHandler")]
public virtual void PrintStackTrace();
[<Android.Runtime.Register("printStackTrace", "()V", "GetPrintStackTraceHandler")>]
abstract member PrintStackTrace : unit -> unit
override this.PrintStackTrace : unit -> unit
属性

注釈

このスロー可能とそのバックトレースを標準エラー ストリームに出力します。 このメソッドは、この Throwable オブジェクトのスタック トレースを、 System.errフィールドの値であるエラー出力ストリームに出力します。 出力の最初の行には、このオブジェクトの #toString() メソッドの結果が含まれています。 残りの行は、メソッド #fillInStackTrace()によって以前に記録されたデータを表します。 この情報の形式は実装によって異なりますが、次の例は一般的と見なされる場合があります: <blockquote>

java.lang.NullPointerException
                    at MyClass.mash(MyClass.java:9)
                    at MyClass.crunch(MyClass.java:6)
                    at MyClass.main(MyClass.java:3)

</blockquote> この例は、プログラムを実行して生成されました。

class MyClass {
                public static void main(String[] args) {
                    crunch(null);
                }
                static void crunch(int[] a) {
                    mash(a);
                }
                static void mash(int[] b) {
                    System.out.println(b[0]);
                }
            }

初期化された null 以外の原因でスロー可能なバックトレースには、通常、原因のバックトレースを含める必要があります。 この情報の形式は実装によって異なりますが、次の例は一般的と見なされる場合があります。

HighLevelException: MidLevelException: LowLevelException
                    at Junk.a(Junk.java:13)
                    at Junk.main(Junk.java:4)
            Caused by: MidLevelException: LowLevelException
                    at Junk.c(Junk.java:23)
                    at Junk.b(Junk.java:17)
                    at Junk.a(Junk.java:11)
                    ... 1 more
            Caused by: LowLevelException
                    at Junk.e(Junk.java:30)
                    at Junk.d(Junk.java:27)
                    at Junk.c(Junk.java:21)
                    ... 3 more

"..."文字を含む行が存在することに注意してください。 これらの行は、この例外のスタック トレースの残りの部分が、この例外によって発生した例外 ("外側" 例外) のスタック トレースの下部にある指定されたフレーム数と一致することを示します。 この短縮形は、ラップされた例外が "因果的な例外" がキャッチされるのと同じメソッドからスローされる一般的なケースで、出力の長さを大幅に短縮できます。 上記の例は、プログラムを実行して生成されました。

public class Junk {
                public static void main(String args[]) {
                    try {
                        a();
                    } catch(HighLevelException e) {
                        e.printStackTrace();
                    }
                }
                static void a() throws HighLevelException {
                    try {
                        b();
                    } catch(MidLevelException e) {
                        throw new HighLevelException(e);
                    }
                }
                static void b() throws MidLevelException {
                    c();
                }
                static void c() throws MidLevelException {
                    try {
                        d();
                    } catch(LowLevelException e) {
                        throw new MidLevelException(e);
                    }
                }
                static void d() throws LowLevelException {
                   e();
                }
                static void e() throws LowLevelException {
                    throw new LowLevelException();
                }
            }

            class HighLevelException extends Exception {
                HighLevelException(Throwable cause) { super(cause); }
            }

            class MidLevelException extends Exception {
                MidLevelException(Throwable cause)  { super(cause); }
            }

            class LowLevelException extends Exception {
            }

リリース 7 の時点で、プラットフォームは 抑制された例外 の概念をサポートしています ( try-with-resources ステートメントと組み合わせて)。 例外を配信するために抑制された例外は、スタック トレースの下に出力されます。 この情報の形式は実装によって異なりますが、次の例は一般的と見なされる場合があります。

Exception in thread "main" java.lang.Exception: Something happened
             at Foo.bar(Foo.java:10)
             at Foo.main(Foo.java:5)
             Suppressed: Resource$CloseFailException: Resource ID = 0
                     at Resource.close(Resource.java:26)
                     at Foo.bar(Foo.java:9)
                     ... 1 more

に注意してください。n more" 表記は、原因で使用されるのと同様に、抑制された例外で使用されます。 原因とは異なり、抑制された例外は、"例外を含む" を超えてインデントされます。

例外には、原因と抑制された例外が 1 つ以上含まれる場合があります。

Exception in thread "main" java.lang.Exception: Main block
             at Foo3.main(Foo3.java:7)
             Suppressed: Resource$CloseFailException: Resource ID = 2
                     at Resource.close(Resource.java:26)
                     at Foo3.main(Foo3.java:5)
             Suppressed: Resource$CloseFailException: Resource ID = 1
                     at Resource.close(Resource.java:26)
                     at Foo3.main(Foo3.java:5)
            Caused by: java.lang.Exception: I did it
             at Foo3.main(Foo3.java:8)

同様に、抑制された例外の原因が考えられます。

Exception in thread "main" java.lang.Exception: Main block
             at Foo4.main(Foo4.java:6)
             Suppressed: Resource2$CloseFailException: Resource ID = 1
                     at Resource2.close(Resource2.java:20)
                     at Foo4.main(Foo4.java:5)
             Caused by: java.lang.Exception: Rats, you caught me
                     at Resource2$CloseFailException.&lt;init&gt;(Resource2.java:45)
                     ... 2 more

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象