[英]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.