簡體   English   中英

從Axis Web服務手動拋出什么樣的異常?

[英]What kind of exception to manually throw from an Axis web service?

我有一些在1.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
}

有沒有正確的方法來做到這一點,或者throw new Exception是正確的方法呢?

您可以創建一個自定義異常(比如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應該完成其余的工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM