【问题标题】:Configuring GWT to return full exceptions to client配置 GWT 以向客户端返回完整的异常
【发布时间】:2015-04-02 05:05:55
【问题描述】:

当服务器上发生未捕获的异常时,客户端会在服务调用的异步回调上调用 onFailure() 方法。他只得到 StatusCodeExceptions,它提供的信息很少。我想通过堆栈跟踪获取服务器上发生的实际异常。这在 GWT 中可行吗?

在我的服务接口中,我将“抛出异常”添加到我希望从服务器获取异常详细信息的方法中。这允许我获取服务器上发生的异常消息,但它的堆栈跟踪仍然在客户端停止。

我知道这对于生产环境来说不是一个好的做法,但我想启用它以进行测试。

【问题讨论】:

    标签: java exception gwt


    【解决方案1】:

    这将是一个三步过程。

    1. 设置未捕获的异常处理程序。在 onModuleLoad() 方法中应该没问题。

      GWT.setUncaughtExceptionHandler(new ExceptionHandler());

    2. 创建一个将实现 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 */
              }
      
          }
      }
      

      }

    3. 调用 ExceltionHandler 并传入 onFailure maithod() 中的 Throwable

      new ExceptionHandler().onUncaughtException(caught);

    如果服务器上发生任何异常,只需将异常对象抛出给客户端(来自 RPC servlet)

    【讨论】:

    • 所以,我认为 GWT 未捕获异常处理程序是针对源自客户端的未捕获异常。我认为这与服务器的异常无关。服务器上发生的任何异常都会在我的 onFailure() 方法中处理
    • 哦,我认为这个相关的问题是我需要做的。我按照您的建议使用未捕获的异常处理程序,但处理程序位于服务器端。 stackoverflow.com/questions/19324026/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    相关资源
    最近更新 更多