| 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メソッドの解説を参照してください。
目次
索引
![]()
|