Problem solve Get help with specific problems with your technologies, process and projects.

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

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

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/">
           <faultstring>Server Error</faultstring>
               <e:myfaultdetails xmlns:e="Some-URI">
                   My application didn't work

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="https://www.w3.org/2002/06/soap-envelope">
   <upg:Upgrade xmlns:upg="https://www.w3.org/2002/06/soap-upgrade">
    <envelope qname="ns1:Envelope"
    <envelope qname="ns2:Envelope"
     <env:Reason>Version Mismatch</env:Reason>

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

Dig Deeper on Topics Archive

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.