如何确定GWT-RPC中触发onFailure的原因?

如何确定GWT-RPC中触发onFailure的原因?,gwt,gwt-rpc,Gwt,Gwt Rpc,我有一个项目,它执行2次RPC调用,然后保存用户在数据存储中提供的数据。第一个RPC调用工作正常,但从第二个调用开始,我总是收到onFailure()消息。如何确定触发onFailure()的原因?我尝试了catch.getCause(),但它没有返回任何内容 feedbackService.saveFeedback(电子邮件、学生姓名、使用的模板、, 新的AsyncCallback(){ 失败时的公共无效(可丢弃){ //向用户显示RPC错误消息 getCause(); Window.aler

我有一个项目,它执行2次RPC调用,然后保存用户在数据存储中提供的数据。第一个RPC调用工作正常,但从第二个调用开始,我总是收到
onFailure()
消息。如何确定触发
onFailure()
的原因?我尝试了
catch.getCause()
,但它没有返回任何内容

feedbackService.saveFeedback(电子邮件、学生姓名、使用的模板、,
新的AsyncCallback(){
失败时的公共无效(可丢弃){
//向用户显示RPC错误消息
getCause();
Window.alert(“失败!”);
}
成功时的公共void(字符串结果){
Window.alert(“已保存!”);
}
});

可丢弃实例是异常的实例。您可以检查它是否是如下所示的自定义异常:

if (caught instanceOf CustomException){
或者,如果要显示异常消息,可以使用getMessage():


如果发生错误,GWT rpc不容易ebug

最简单的部分是检查异常是否属于
StatusCodeException
的一部分

  • 状态码404表示您指向了错误的端点
  • 0意味着
    • 西尔弗是遥不可及的
    • 您没有权限检查服务器是否可用(X-domain-request)
您可以使用Chrome Web检查器来调试GWT-RPC

您应该能够看到从浏览器到后端的所有呼叫


最常见的故障是由于对象的序列化。您必须确保所有数据传输的对象都实现
java.io.Serializable

大多数情况下,引发
onFailure()
方法的只是服务器端异常


尝试在服务器端设置断点。这将有助于您找出问题所在。

感谢您的回复。我按照你的建议做了,结果是“空”。你知道这意味着什么吗?我认为最好的方法是跟踪你的服务器代码。您的服务器代码似乎遇到了一些异常。异常通常不会发送到客户端,而是只触发onFailure方法。我同意@H.Aghassi。最好通过跟踪服务器代码来了解为什么会得到空值。是捕获的对象还是消息为空?
Window.alert("Failure: " + caught.getMessage());