Java 从Axis web服务手动抛出哪种异常?
我有一些在Axis1.1上开发的Web服务,我需要做一些更改。在此期间,我正在修复异常处理代码,但我不知道在出现错误时应该抛出什么样的异常 我只需要将消息发送到客户端,不需要担心异常中的堆栈跟踪和自定义信息。我不想处理扩展soapfaults,或提供失败的原因,以及诸如此类的问题Java 从Axis web服务手动抛出哪种异常?,java,exception,jax-ws,Java,Exception,Jax Ws,我有一些在Axis1.1上开发的Web服务,我需要做一些更改。在此期间,我正在修复异常处理代码,但我不知道在出现错误时应该抛出什么样的异常 我只需要将消息发送到客户端,不需要担心异常中的堆栈跟踪和自定义信息。我不想处理扩展soapfaults,或提供失败的原因,以及诸如此类的问题 @WebMethod public string[] myMethod() throws ..?.. { throw new AxisFault(); // not recommended throw
@WebMethod
public string[] myMethod() throws ..?.. {
throw new AxisFault(); // not recommended
throw new SOAPFaultException(); // seems overly general
throw new Exception(); // what we have now
}
有没有正确的方法可以做到这一点,或者
抛出新异常是正确的方法 您可以创建一个自定义异常(比如footexception
),扩展用JAX-WS注释的exception
然后声明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应该完成其余的工作。仅仅抛出一个标准异常有什么不对吗?因为我们从这里的异常派生,所以我假设没有问题。如果没有,那么我将暂时坚持这一点,直到需要更多信息。不过,这是一个很好的小例子,如果我们需要更多的话,我会回到这里。谢谢:)对我来说,这并没有什么问题,但是生成的SOAP错误可能不包含任何有用的信息。上述机制之所以如此,是因为JAX-WS将调用getFaultInfo()
,以判断出了什么问题,并将其包含在soap fault.Hm的detail
标记中。。。我得调查一下。我对此不太了解。在这一点上,我想做的就是发送异常和消息,不需要任何详细信息(它们都使用消息中返回的UID登录到服务器上,等等),我必须尝试跳转异常并查看现在返回的数据。
@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());
}