例外キャッチャー

どっかで例外が出てもなんだかんだで結構そのまんま動いてしまうGWT。ブラウザの開発ツールなどのコンソールには一応例外は表示されるんだけど、UmbrellaExceptionってのにくるまれちゃって何も判らない。

GWTは例外が投げられても処理を止めずにどんどん先に進むらしく、その例外をこのUmbrellaExceptionに突っ込んでいるようなのだ。

最終的にUmbrellaExceptionとして投げられるのだが、それをどうやってキャッチすりゃいいのか。困った。

と思ったら簡単だった。

GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
        @Override
        public void onUncaughtException(Throwable e) {
            if(e.getClass() == UmbrellaException.class){
                for(Throwable t : ((UmbrellaException) e).getCauses()){
                    Window.alert(t.toString());
                }
            }else{
                Window.alert(e.toString());
            }
        }
    });

toString()で取るとスタックトレースで見れた。が、プリチーなコンパイルしとらんので、cというオブジェクトがnullなのでfcというメソッドが叩けないとか、わからん!プリチーにせんとさっぱりです。