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
Note the presence of lines containing the characters "...". These lines indicate that the remainder of the stack trace for this exception matches the indicated number of frames from the bottom of the stack trace of the exception that was caused by this exception (the "enclosing" exception).
文字「...」を含む行の存在に注意してください。これらの行は、この例外のスタック トレースの残りの部分が、この例外によって発生した例外のスタック トレースの最後から指定されたフレーム数と一致することを示しています。 (「囲む」例外)。🎜
🎜これらの行は、この例外のスタック トレースの残りの部分が、例外のスタック トレースの最後から指定されたフレーム数と一致することを示します (「囲んでいる」例外が原因) 🎜
🎜メソッド間の呼び出しはすべてスタック モデルであることも理解できます。たとえば、a.b.c は、メソッド a がメソッド b を呼び出し、メソッド b がメソッド c を呼び出すことを意味します。この場合、メソッド c でスローされる例外は、メソッド c のスタック フレーム内の情報のみを表します。メソッド b によってスローされる例外は、2 つのスタック フレーム b と c の情報を持ちます。 🎜
最下位の例外の最後の行と前の例外の最初の行が結合されて、完成したスタック情報が形成されます。
理由:
これらの例外情報は
Throwable.printStackTrace()
を通じてSystem.err
に出力されます。最初に JDK 公式ドキュメントから説明を引用しますThrowable.printStackTrace()
输出到System.err
,先引用JDK官方文档的一段描述也可以这样理解,方法之间的调用都是栈模型,比如
文字「...」を含む行の存在に注意してください。これらの行は、この例外のスタック トレースの残りの部分が、この例外によって発生した例外のスタック トレースの最後から指定されたフレーム数と一致することを示しています。 (「囲む」例外)。🎜 🎜これらの行は、この例外のスタック トレースの残りの部分が、例外のスタック トレースの最後から指定されたフレーム数と一致することを示します (「囲んでいる」例外が原因) 🎜 🎜メソッド間の呼び出しはすべてスタック モデルであることも理解できます。たとえば、a.b.c
リーリーa.b.c
は、メソッド a がメソッド b を呼び出し、メソッド b がメソッド c を呼び出すことを意味します。この場合、メソッド c でスローされる例外は、メソッド c のスタック フレーム内の情報のみを表します。メソッド b によってスローされる例外は、2 つのスタック フレーム b と c の情報を持ちます。 🎜