Interstage Application Server トラブルシューティング集 |
目次
索引
![]() ![]() |
第19章 Java実行環境運用時の異常 | > 19.2 スタックトレース |
JDK/JRE 1.4では、エラーと例外のスーパークラスであるjava.lang.Throwableに、原因となるjava.lang.Throwableを設定できるコンストラクタとメソッドが追加されました。
これにより、java.lang.ThrowableのprintStackTraceメソッドなどでは、原因となるjava.lang.Throwableのスタックトレースも出力されます。
以下、サンプルプログラムを使って、解説します。
-------------------------------------------------------------------------------- 1 :public class Test { 2 : 3 : public static void main(String[] args) { 4 : new Test(); 5 : } 6 : 7 : Test() { 8 : try{ 9 : parentMethod(); 10: } catch (Exception e) { 11: e.printStackTrace(); 12: } 13: } 14: 15: void parentMethod() throws HiLevelException { 16: try { 17: childMethod(); 18: } catch (Exception e) { 19: throw new HiLevelException("HiLevel", e); 20: } 21: } 22: 23: void childMethod() throws LowLevelException { 24: throw new LowLevelException("LowLevel"); 25: } 26:} 27: 28:class HiLevelException extends Exception { 29: HiLevelException(String msg, Throwable cause) { 30: super(msg, cause); 31: } 32:} 33: 34:class LowLevelException extends Exception { 35: LowLevelException(String msg) { 36: super(msg); 37: } 38:} --------------------------------------------------------------------------------
以下は、上のサンプルプログラムが出力するスタックトレースです。
-------------------------------------------------------------------------------- HiLevelException: HiLevel at Test.parentMethod(Test.java:19) at Test.<init>(Test.java:9) at Test.main(Test.java:4) Caused by: LowLevelException: LowLevel at Test.childMethod(Test.java:24) at Test.parentMethod(Test.java:17) ... 2 more --------------------------------------------------------------------------------
HiLevelExceptionに続いて、"Caused by:"以降に、原因となるLowLevelExceptionのスタックトレースが出力されています。
最終行の“... 2 more"は、"Caused by:"の直前の2行が続きのスタックトレースであることを示しています。
つまり、以下のように解釈することができます。
-------------------------------------------------------------------------------- Caused by: LowLevelException: LowLevel at Test.childMethod(Test.java:24) at Test.parentMethod(Test.java:17) at Test.<init>(Test.java:9) at Test.main(Test.java:4) --------------------------------------------------------------------------------
これにより、以下のことがわかります。
詳細は、Java APIリファレンス(javadoc)のjava.lang.ThrowableのprintStackTraceメソッドの解説を参照してください。
目次
索引
![]() ![]() |