0

我有一个基于 GWT + RestyGWT 和 Spring 的应用程序

我正在尝试在客户端站点上进行一些用户友好的异常处理。

我在服务器端有一些引发异常的方法:

@PostMapping(...)
@Transactional(...)
public long withdraw(@PathVariable(value = "amount) long amount) throws CustomException {
    if (amount < 0) {
        throw new CustomException("Amount is negative");
    }
    account.withdraw(amount);
    return account.balance;
}

它从客户端称为异步并在那里处理:

... new MethodCallback<...>() {
@Override
public void onFailure(Method method, Throwable throwable) {
    // here should be error handling
}

如何获取原始错误消息和类(“金额为负数”和 CustomException)?我能从方法和可抛出变量中得到的只有:

  • 错误代码 = 500
  • 响应消息 =“内部服务器错误”
  • throwable 是 org.fusesource.restygwt.client.FailedResponseException
4

1 回答 1

1

你不能ExceptionRestyGWT中收到相同的内容(这可以使用GWT RPC来完成)。但是,您可以在服务器端统一处理异常(在 jersey 中,您可以使用 spring 中的异常映射器称为异常处理程序)并返回具有已知 JSON 格式的错误响应。FailedResponseException然后您可以使用(这是您现在收到的异常)获取此错误响应,此异常包含响应,因此您可以执行MyKnownErrorResponse o = JSON.parse(failedResponseException.getResponse().getText()).

于 2019-01-16T13:46:05.267 回答