15

GWT でスタック トレースを文字列に出力することは可能ですか? java.io のクラスを使用する通常の方法は機能しないと思います。これは、java.io パッケージがクライアント側で利用できないためです (そして、Writer、PrintWriter などがそのパッケージに含まれています)。

ありがとうございました

4

4 に答える 4

13

StackTraceElementがエミュレートされているかどうかはわかりませんが、エミュレートされている場合は、次のようなものを実行できます。

for (StackTraceElement element : exception.getStackTrace()) {
    string += element + "\n";
}
于 2012-12-03T04:32:05.253 に答える
9

String完全なスタック トレースをGWTとして取得するために使用している方法は次のとおりです。

private static String getMessage (Throwable throwable) {
    String ret="";
    while (throwable!=null) {
            if (throwable instanceof com.google.gwt.event.shared.UmbrellaException){
                    for (Throwable thr2 :((com.google.gwt.event.shared.UmbrellaException)throwable).getCauses()){
                            if (ret != "")
                                    ret += "\nCaused by: ";
                            ret += thr2.toString();
                            ret += "\n  at "+getMessage(thr2);
                    }
            } else if (throwable instanceof com.google.web.bindery.event.shared.UmbrellaException){
                    for (Throwable thr2 :((com.google.web.bindery.event.shared.UmbrellaException)throwable).getCauses()){
                            if (ret != "")
                                    ret += "\nCaused by: ";
                            ret += thr2.toString();
                            ret += "\n  at "+getMessage(thr2);
                    }
            } else {
                    if (ret != "")
                            ret += "\nCaused by: ";
                    ret += throwable.toString();
                    for (StackTraceElement sTE : throwable.getStackTrace())
                            ret += "\n  at "+sTE;
            }
            throwable = throwable.getCause();
    }

    return ret;
}
于 2012-12-03T12:41:32.027 に答える
3

エラー スタック トレースを GUI ラベルに表示することはお勧めしません。

1) GWT 難読化後は読み取り不能。それらは、改行の上にタブで整列された文字の束のように見えます。

2) I18N 形式ではありません。

3) 正しい方法は、正しい形式のエラー "Message" をユーザーに表示することです。exception.getMessage() は、ユーザーに必要な UX インタラクションを提供する、obf 以外の情報を 1 行で提供します。

well formed4) (ユーザー向けではなく) デバッグに役立つ例外スタックトレースを探している場合は、GWT の十分に文書化されたロギング機能を Web モードの例外とともに使用する必要があります -

a) https://developers.google.com/web-toolkit/doc/latest/DevGuideLogging

b) http://code.google.com/p/google-web-toolkit/wiki/WebModeExceptionsも参照してください。

于 2012-12-03T14:10:24.850 に答える