スタックトレース

研修の課題をやっていたときに、始めてみた言葉です。


http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html

スタックトレース内の要素で、Throwable.getStackTrace() により返される値。各要素は単一のスタックフレームを表します。スタックの先頭にあるスタックフレームを除く、すべてのスタックフレームは、メソッド呼び 出しを表します。スタックの先頭のフレームは、スタックトレースが生成された実行ポイントを表します。通常、これは、スタックトレースに対応するスロー可 能オブジェクトが作成されたポイントになります。

上は、直接APIの言葉を引用しただけです、
使い方は下になります。

「StackInfo.java」
public class StackInfo {
    public static void main(String[] args) {
Throwable t = new Throwable();
StackTraceElement[] ste = t.getStackTrace();
System.out.println("class=" + ste[0].getClassName());
System.out.println("method=" + ste[0].getMethodName());
System.out.println("file=" + ste[0].getFileName());
System.out.println("line=" + ste[0].getLineNumber());
}
}
実際のソースコード:

DivZeroException.java
ExceptionChane.java
DivisionProcessing.java

上のソースコードを実行した結果:
[xxxx@loveapple ActiveWork]$ java ExceptionChane
40
正常時スタックトレース情報のクラス名:ExceptionChane
正常時スタックトレース情報のメソッド名:main
正常時スタックトレース情報のファイル名:ExceptionChane.java
正常時スタックトレース情報のステップ数:27
カウント:1
4
正常時スタックトレース情報のクラス名:ExceptionChane
正常時スタックトレース情報のメソッド名:main
正常時スタックトレース情報のファイル名:ExceptionChane.java
正常時スタックトレース情報のステップ数:27
カウント:2
-5
正常時スタックトレース情報のクラス名:ExceptionChane
正常時スタックトレース情報のメソッド名:main
正常時スタックトレース情報のファイル名:ExceptionChane.java
正常時スタックトレース情報のステップ数:27
カウント:3
20
正常時スタックトレース情報のクラス名:ExceptionChane
正常時スタックトレース情報のメソッド名:main
正常時スタックトレース情報のファイル名:ExceptionChane.java
正常時スタックトレース情報のステップ数:27
カウント:4
例外時スタックトレース情報のクラス名:ExceptionChane
例外時スタックトレース情報のメソッド名:main
例外時スタックトレース情報のファイル名:ExceptionChane.java
例外時スタックトレース情報のステップ数:27
!!!!!!除算数が0の時、DivZeroException 例外です。!!!!!!
DivZeroExceptionスタックトレース情報クラス名:DivZeroException
DivZeroExceptionスタックトレース情報のメソッド名:
DivZeroExceptionスタックトレース情報のファイル名:DivZeroException.java
DivZeroExceptionスタックトレース情報のステップ数:11

面白い記事も見つかった:
http://codezine.jp/a/article.aspx?aid=124

コメント

このブログの人気の投稿

Linux(UNIX)、MS-DOS、OpenVMS コマンド対応表

ECスペシャリストに生まれ変われ!