1

我有一些类似的代码:

public class SOAPServer {
    public Object[] getObjects() throws IllegalStateException {
        Object[] objects = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }

        int index = 10;
        try {

            Object object = objects[index];
        } catch (Exception e) {
            throw new IllegalStateException("Server cannot access Object " + index + ".", e);
        }

        return objects;
    }
}

客户端可以毫无问题地接收抛出的异常,但似乎原因没有通过 SOAP 传递。Exception::getCause()返回空值。

有没有办法使用 JAX-WS 和 SOAP 来抛出这样的链式异常?

4

1 回答 1

2

有没有办法使用 JAX-WS 和 SOAP 来抛出这样的链式异常?

  1. 理论上可能有一种方法,但它很可能会破坏 SOAP 的语言中立性,因此即使仅基于这些理由也不推荐它;

  2. 即使在使用 Java 序列化时支持这种方式微不足道,但仍然不建议这样做,因为您无法控制哪个异常将成为根本原因。它可能不是可序列化的,它可能包含对巨大对象图的引用等。

始终建议仅将错误消息传输到客户端,并依赖服务器端日志进行详细诊断。

于 2013-08-29T09:44:24.153 回答