Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Axis web服务手动抛出哪种异常?_Java_Exception_Jax Ws - Fatal编程技术网

Java 从Axis web服务手动抛出哪种异常?

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

我有一些在Axis1.1上开发的Web服务,我需要做一些更改。在此期间,我正在修复异常处理代码,但我不知道在出现错误时应该抛出什么样的异常

我只需要将消息发送到客户端,不需要担心异常中的堆栈跟踪和自定义信息。我不想处理扩展soapfaults,或提供失败的原因,以及诸如此类的问题

@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());
}