Ask the Expert

What is the difference between a fault and an exception in SOAP?

What is the difference between a fault and exception in SOAP?

    Requires Free Membership to View

There is no such thing as an exception in SOAP. There are only faults. A fault is a response message to a request message that could not be processed. The <FAULT> response message is the only SOAP body structure that has been defined. In SOAP 1.1, a <FAULT> message should look something like this:

  <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
   <env:Body>
       <env:Fault>
           <faultcode>env:Server</faultcode>
           <faultstring>Server Error</faultstring>
           <detail>
               <e:myfaultdetails xmlns:e="Some-URI">
                 <message>
                   My application didn't work
                 </message>
                 <errorcode>
                   1001
                 </errorcode>
               </e:myfaultdetails>
           </detail>
       </env:Fault>
   </env:Body>
  </env:Envelope>

There are four possible <faultcode> values: VersionMismatch, MustUnderstand, Client, and Server, indicating, respectively: the SOAP service didn't understand your SOAP envelope; the SOAP service didn't understand a SOAP Header that specified mustUnderstand=1; the client sent an invalid message (or invalid data within the message); and the server was unable to process the message due to some error it encountered. You may extend these basic codes with subcodes, e.g., Client.InvalidArgument. The <detail> element can contain whatever detailed information you want to send back, such as a Java exception. Depending on the SOAP implementation you use, the client SOAP runtime system may be able to rethrow the Java exception.

The SOAP 1.2 <FAULT> element is a bit different. Here's an example of a VersionMismatch fault:

 <env:Envelope xmlns:env="http://www.w3.org/2002/06/soap-envelope">
  <env:Header>
   <upg:Upgrade xmlns:upg="http://www.w3.org/2002/06/soap-upgrade">
    <envelope qname="ns1:Envelope"
             xmlns:ns1="http://www.w3.org/2002/06/soap-envelope"/>
    <envelope qname="ns2:Envelope"
             xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/"/>
   </upg:Upgrade>
  </env:Header>
  <env:Body>
   <env:Fault>
    <env:Code><env:Value>env:VersionMismatch</env:Value></env:Code>
     <env:Reason>Version Mismatch</env:Reason>
    </env:Fault>
  </env:Body>
 </env:Envelope>

Notice that the element names within the <Fault> message are different. See the SOAP 1.2 spec for more details.


This was first published in September 2002

There are Comments. Add yours.

 
TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to: