Java講座

ケアレスミスを減らす章
1.4. キャッチした例外は必ず使う
『目的』

例外の原因を追跡できるようにしましょう。

『Before』

FileInputStreamクラスを使おうとしたら例外のキャッチをするようコンパイラに促されたので キャッチ処理を実装しました。これでコンパイルは通って実行することができます。
public void method() {
    try {
        FileInputStream fis = new FileInputStream("c:\\hoge\\foo\bar.dat");
    } catch (IOException e) {
        System.out.println("IOException");
    }
}
しかし、実際に例外が発生した場合、『IOException』としか表示されません。
この情報ではどこでなぜ例外が発生したのかを知ることができませんね。

『After』

もうちょっと情報を使いましょう。
たとえば e.getMessage() で詳細メッセージが取得できます。
public void method() {
    try {
        FileInputStream fis = new FileInputStream("c:\\hoge\\foo\bar.dat");
    } catch (IOException e) {
        System.out.println("IOException : " + e.getMessage());
    }
}

c:\hoge\foo\bar.dat (指定されたパスが見つかりません。)
また、e.printStackTrace() によってスタックトレースをコンソールへ出力することもできます。
java.io.FileNotFoundException: c:\hoge\foo\bar.dat (指定されたパスが見つかりません。)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.(FileInputStream.java:106)
        at java.io.FileInputStream.(FileInputStream.java:66)
        at misc.trycatch.opt.TryCatchTest.method(TryCatchTest.java:30)

『まとめ』

例外オブジェクトには、例外の元となった様々な情報が詰まっています。
原因究明のため、例外は無駄にしないようにしましょう。
前のページ   次のページ

当ページ・当社へのご意見やご感想があればお手数ですが「お問い合わせ」までお願いいたします。
当社への就職をお考えの方は「採用情報ページ」までお願いいたします。
C言語を学びたい方は「C言語講座」もどうぞ。