是否可以將堆棧跟蹤打印到GWT中的字符串?使用的java.io中的類將無法工作,我的常用方法認爲,由於java.io包不可用客戶方(和作家,爲PrintWriter等都是在那個包)把堆棧跟蹤變成一個字符串?
謝謝
是否可以將堆棧跟蹤打印到GWT中的字符串?使用的java.io中的類將無法工作,我的常用方法認爲,由於java.io包不可用客戶方(和作家,爲PrintWriter等都是在那個包)把堆棧跟蹤變成一個字符串?
謝謝
我不知道,如果一個StackTraceElement是模擬的,但如果它是你可以運行類似
for (StackTraceElement element : exception.getStackTrace()) {
string += element + "\n";
}
下面是我使用來獲取一個完整的堆棧跟蹤在GWT一個String
方法:
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;
}
這很好。但你如何使用StackTraceDeobfuscator? – confile
我不會推薦嘗試在GUI標籤中顯示錯誤堆棧跟蹤。
1)它們在GWT混淆後不可讀。他們只是看起來像一堆標籤對齊的新字符。
2)它們不是I18N格式。
3)正確的方法是正確顯示用戶良好的錯誤「消息」。 exception.getMessage()會給你一行非obf信息,這些信息應該爲用戶提供必要的用戶體驗交互。
4)如果你正在尋找well formed
異常堆棧跟蹤有助於調試(不是用戶),你應該使用GWT的有據可查的記錄功能與網絡模式異常 -
一)https://developers.google.com/web-toolkit/doc/latest/DevGuideLogging
B)同樣在http://code.google.com/p/google-web-toolkit/wiki/WebModeExceptions
讀這將是使問題更好,如果你可以提到你正在使用什麼測井技術你是以下在客戶端這GWT的版本。 – SSR
你在說什麼堆棧跟蹤?編譯時間還是運行時間?如果是運行時,只需使用任何記錄器,或用try catch塊包圍你的代碼,並將異常堆棧跟蹤傳輸到你想要的任何字符串。 –
嗨,運行時異常 - 我正在使用GWT 2.5。是的,我想將完整的堆棧跟蹤轉換爲字符串,然後可能將其顯示在標籤中。但是,我們如何才能獲得一個異常實例堆棧跟蹤爲一個字符串? – user291701