2

我有一个客户端 (JVM1) 以 RESTful 方式与服务器 (JVM2) 交谈。我正在使用 JSON 作为有效负载机制。

当服务器抛出异常时,我可以将其序列化为 JSON 格式并通过网络发送。在客户端,我收到响应并查看 JSON 格式的内容。

问题是我无法识别正在抛出的特定类型的异常。

给定 JSON 格式的某些异常的序列化版本(可能是 NullPointerException、IllegalStateException,甚至是检查异常),我如何在客户端构造相同类型的对象。

如果需要,我可以添加任何包装类并在客户端和服务器之间共享它。

提前致谢。

4

1 回答 1

3

通常,在客户端反序列化任意异常是一个坏主意。例如,服务器可以抛出一个 SQLException 的子类,该子类恰好特定于正在使用的 jdkc 驱动程序 impl。客户端很可能在其类路径中没有jdbc 驱动程序,因此任何反序列化异常的尝试都会导致某种疯狂的类加载异常。最好的办法是将异常转换为像“ServerException”这样的通用类,并将相关细节作为该类的字符串成员(例如原始异常名称、消息、堆栈跟踪等)。

于 2012-07-30T16:35:35.770 回答