gpt4 book ai didi

java - 从 Axis Web 服务手动抛出哪种异常?

转载 作者:行者123 更新时间:2023-12-02 07:44:57 24 4
gpt4 key购买 nike

我有一些在 axis 1.1 上开发的 Web 服务,我需要进行一些更改。在此期间,我正在修复异常处理代码,但我不知道出现错误时应该抛出哪种异常。

我只需要将消息发送给客户端,不需要担心异常中的堆栈跟踪和自定义信息。我不想处理扩展的肥皂故障,或者提供失败的原因,以及所有这些爵士乐。

@WebMethod
public string[] myMethod() throws ..?.. {
throw new AxisFault(); // not recommended
throw new SOAPFaultException(); // seems overly general
throw new Exception(); // what we have now
}

有没有正确的方法可以做到这一点,或者抛出新的异常是正确的方法吗?

最佳答案

您可以创建一个自定义异常(例如 FooException),扩展使用 JAX-WS @WebFault 注释的 Exception .

@WebFault(faultBean = "org.foo.bar.FooFault")
public class FooException extends Exception {
private FooFault fooFault;

public FooException() {
super();
}

public FooException(String message, FooFault fooFault, Throwable cause) {
super(message, cause);
this.fooFault = fooFault;
}

public FooException(String message, FooFault fooFault) {
super(message);
this.fooFault = fooFault;
}

public FooFault getFaultInfo() {
return fooFault;
}
}

// this is org.foo.bar.FooFault
public class FooFault {
// POJO
}

然后声明您的 Web 方法抛出该异常。

@WebMethod
public string[] myMethod() throws FooException {
// do some stuff
throw new FooException();
// or with a cause
try {
// something dangerous
} catch (Exception e) {
throw new FooException("Shit happens", new FooFault(), e);
}
// or like this
throw new FooException("Foo", new FooFault());
}

JAX-WS 应该完成剩下的工作。

关于java - 从 Axis Web 服务手动抛出哪种异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11027535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com