2011年4月8日金曜日

[Java]グローバル例外ハンドラ

.NETではグローバル例外ハンドラというのがあり、処理されなかった例外を一手に処理するハンドラがあります。で、Javaは?と思って調べてみると、あるんですね。
この手の機能は一般的なものなんですかねぇ。java 1.5からの機能みたいですね。
しかしこのメソッドはセッターであるため、1つしか設定できないんです。というわけで、複数でハンドリングする場合は、注意しないと上書きされちゃいますね。

サンプルコードは以下のとおり。

import java.lang.Thread.UncaughtExceptionHandler;
class TestApp {
    public static void main(String[] args) {
        //スタティックメソッドのほうは、どこで例外が発生しても情報が取得できる!
        Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
            public void uncaughtException(Thread t, Throwable e) {
                System.out.println(e.getMessage());
            }
        });
        new TestApp().exception();
    }
    public void exception(){
        throw new RuntimeException("テストだよーん");
    }
}

0 件のコメント :