當服務器上發生未捕獲異常時,客戶端在服務調用的異步回調上調用onFailure()方法。他只得到StatusCodeExceptions,它提供的信息很少。我想通過它的堆棧跟蹤來獲取服務器上發生的實際異常。這是可能的GWT?配置GWT向客戶端返回完全異常
在我的服務接口中,我向需要服務器的異常詳細信息的方法中添加了「throws Exception」。這使我可以獲得服務器上發生的異常消息,但其堆棧跟蹤仍在客戶端停止。
我知道這對於生產環境來說不是很好的做法,但是我希望啓用它來進行測試。
當服務器上發生未捕獲異常時,客戶端在服務調用的異步回調上調用onFailure()方法。他只得到StatusCodeExceptions,它提供的信息很少。我想通過它的堆棧跟蹤來獲取服務器上發生的實際異常。這是可能的GWT?配置GWT向客戶端返回完全異常
在我的服務接口中,我向需要服務器的異常詳細信息的方法中添加了「throws Exception」。這使我可以獲得服務器上發生的異常消息,但其堆棧跟蹤仍在客戶端停止。
我知道這對於生產環境來說不是很好的做法,但是我希望啓用它來進行測試。
這將是一個三步過程。
設置未捕獲的異常處理程序。在onModuleLoad()方法應該沒問題。
GWT.setUncaughtExceptionHandler(new ExceptionHandler());
創建一個類,將實現GWT.UncaughtExceptionHandler接口,將解析的Throwable。
public static class ExceptionHandler implements GWT.UncaughtExceptionHandler {
@Override
public void onUncaughtException(final Throwable e) {
if (e instanceof UmbrellaException) {
final UmbrellaException umb = (UmbrellaException) e;
String errMsg = "";
for (Throwable t : umb.getCauses()) {
errMsg += t.getMessage() + "\n";
for (StackTraceElement element : t.getStackTrace()) {
errMsg += element.getClassName() + "(" + element.getMethodName() + ":"
+ element.getLineNumber() + ")\n";
}
/* errMsg String contains full stack trace */
}
}
}
}
調用ExceltionHandler並傳遞Throwable的是排在onFailure處maithod()
new ExceptionHandler().onUncaughtException(caught);
如果服務器上發生的任何異常簡單地拋出客戶端的異常對象(來自RPC servlet)
所以,我認爲GWT未捕獲的異常處理程序是源於客戶端的未捕獲的異常。我不認爲這與服務器的異常有關。我的onFailure()方法處理服務器上發生的任何異常 – 2015-04-02 11:36:44
哦,我認爲這個相關的問題是我需要做的。按照您的建議,我使用Uncaught異常處理程序,但處理程序駐留在服務器端。 http://stackoverflow.com/questions/19324026/how-do-i-get-the-server-side-exception-message-with-gwt – 2015-04-02 11:45:28