文章目录
- 第十九章 SOAP 错误处理
- `Web` 服务中的默认故障处理
- 在 `Web` 服务中返回自定义 `SOAP` 错误
第十九章 SOAP 错误处理
本主题介绍如何处理 Web
服务和 Web
客户端内的故障。
请注意,SOAPPREFIX
参数会影响任何 SOAP
错误中使用的前缀;请参阅指定 SOAP
信封前缀。
Web
服务中的默认故障处理
默认情况下,当 IRIS
数据平台 Web
服务遇到错误时,它会返回包含故障的标准 SOAP
消息。以下显示了一个示例(针对 SOAP 1.1
)。此示例中省略了 SOAP
信封:
<SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Server</faultcode><faultstring>Server Application Error</faultstring><detail><error xmlns='https://www.myapp.org' ><text>ERROR #5002: ObjectScript error: <DIVIDE>zDivide^FaultEx.Service.1</text></error></detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
在 Web
服务中返回自定义 SOAP
错误
要创建并返回自定义 SOAP
错误,请在捕获错误的代码的适当区域内执行以下操作:
- 创建包含适当信息的错误对象。为此,请调用
Web
服务的以下方法之一:MakeFault()
、MakeFault12()
、MakeSecurityFault()
或MakeStatusFault()
。这些将在下一小节中讨论。
或者手动创建一个故障对象,如本主题后面所述。
- 调用
Web
服务的ReturnFault()
方法,将故障对象作为参数传递。请注意,ReturnFault()
不会返回给其调用者;它只是发送故障并终止Web
方法的处理。
以下显示一个例子:
Method Divide(arg1 As %Numeric, arg2 As %Numeric) As %Numeric [ WebMethod ]
{Try {Set ans=arg1 / arg2} Catch {//<detail> element must contain element(s) or whitespace//specify this element by passing valid XML as string argument to MakeFault() set mydetail="<mymessage>Division error detail</mymessage>"set fault=..MakeFault($$$FAULTServer,"Division error",mydetail)// ReturnFault must be called to send the fault to the client.// ReturnFault will not return here.Do ..ReturnFault(fault)}Quit ans
}