序列化GWT RPC的ANTLR异常

时间:2011-08-22 15:19:10

标签: java gwt antlr gwt-rpc antlr3

我正在使用GWT-RPC来调用ANTLR语法。 如果语法失败,我创建一个包含语法抛出的错误/异常的对象并将其返回给客户端。

当我这样做时,我得到了例外:

com.google.gwt.user.client.rpc.SerializationException: Type 'org.antlr.runtime.NoViableAltException' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded.

我发现在 com.google.appengine.repackaged.org.antlr.runtime 包裹。

如何将 org.antlr.runtime.NoViableAltException 转换为 com.google.appengine.repackaged.org.antlr.runtime.NoViableAltException

2 个答案:

答案 0 :(得分:1)

你自己需要例外吗?我想不会 - 你可能需要消息或者至多需要堆栈跟踪。由于您无论如何都要重新打包例外,只需重新打包所需的字符串并通过网络发送。

答案 1 :(得分:0)

作为创建可以序列化的新异常的替代方法,我让我的Parser覆盖了BaseRecognizer中的 emitErrorMessage 方法。

@members {
    @Override
    public void emitErrorMessage(String msg) {
        // The original prints to stdout.
        // You can do what you like with the message.
    }
}

正如塔索斯在答案中所说,我实际上并不需要例外,只是来自它的信息。