Interstage Application Serverにおいて、Javaアプリケーションで例外が発生した場合に、その原因を調べる方法はありますか?
- Javaアプリケーションで例外が発生した場合に、その原因を調べる方法を教えてください。
- 例外が発生した原因の調査手段として、例外のスタックトレース情報が有効です。例外発生時にスタックトレースを出力する最も簡単な方法は、キャッチした例外に対して、printStackTrace()メソッドを呼び出すように、プログラムを記述することです。
例外をキャッチした場合は、スタックトレース情報をできるだけ出力するようにしてください。次のプログラムのように、スタックトレース情報を出力しない場合は、例外が発生したメソッドを特定するのが困難になります。
[スタックトレースを出力しないプログラム例]
try {
FileInputStream fis = new FileInputStream(args[0]);
} catch (FileNotFoundException e) {
System.err.println(e); // 発生した例外は分かるが、発生したメソッドが分からない
}次のようなプログラムの場合、スタックトレース情報を出力するので、問題が発生した箇所を特定できます。
[スタックトレースを出力するプログラム例]
try {
java.io.FileInputStream fis = new java.io.FileInputStream(args[0]);
} catch (FileNotFoundException e) {
e.printStackTrace(); // 発生した例外のスタックトレース情報を出力
}上記のプログラムで例外が発生すると、次のような出力を得られます。
[スタックトレース情報の例]
java.io.FileNotFoundException: NoSuchFile.txt (指定されたファイルが見つかりません。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at Test.main(Test.java:6)この場合、スタックトレース情報から、Test.javaの6行目で呼び出している、java.io.FileInputStreamコンストラクタのパラメーターに、誤りがあると推測できます。
関連FAQ:
FAQ5308 「Interstage Application Serverにおいて、Javaアプリケーションでjava.lang.NullPointerExceptionが発生した際、スタックトレース(およびException以外のメッセージ)が出力されない場合があります。」
製品・サービス区分 | Interstage | ||||||
---|---|---|---|---|---|---|---|
製品・サービス情報 |
|
||||||
アンサー種別 | 運用/保守 |