| Interstage Application Server チューニングガイド |
目次
索引
![]()
|
| 第8章 JDK/JREのチューニング | > 8.3 チューニング/デバッグ技法 | > 8.3.2 スタックトレース |
JDK/JRE 1.4になって、java.lang.Throwableに次のコンストラクタとメソッドが追加されました。
これにより、スタックトレースには、原因となる例外のスタックトレースも出力されるようになりました。
以降、図1のサンプルを使って、説明します。
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:} |
図1のサンプルを実行すると、図2のスタックトレースが出力されます。
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行が続きのスタックトレースであることを示しています。
つまり、図3のように解釈することができます。
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リファレンスのjava.lang.ThrowableのprintStackTraceメソッドの解説を参照してください。
目次
索引
![]()
|